formatting - How to execute a java command with interpolated arguments with Python's subprocess & Popen -
Trying to run Java commands from within Python on Windows, by using subprocess. Popen
First I have defined two strings:
java_string = 'java -xmx1024m -classpath ;. ./ db2jcc.jar; ./ retainSdi.zip; ./jviews -chart.jar; ./jviews-framework.jar l2stats CRF1426 & gt; '+ Datetime.date.today (). Strftime ("% d /% m /% Y") + ' Html 'working_ir =' c: \\ user \\ IBM_ADMIN \\ Desktop \\ Weekly Report 2014 \\ " Then I tried to use the following subprocesses:
Subprocess. Open ([java_string], cwd = work_dir) resulting in "FileNotFoundError: [WinError 2] system can not find the specified file" I edited java_string So that there is no Java command, such as:
java_string = '-Xmx1024M -classpath ;. ./ db2jcc.jar; ./ retainSdi.zip; ./jviews-chart.jar; ./jviews-framework.jar l2stats CRF1426 & gt; 'Datetime.date.today (). Strftime ("% d /% m /% y") + '.html' And then Popen is called the same:
subprocess .popen (['java', java_string], cwd = work_dir) resulting in
Invalid maximum pile size: - Xmx1024M-square path; ./ db2jcc.jar; ./ RetainSdi.z ip; ./jviews-chart.jar; ./jviews-framework.jar l2stats CRF1426 & gt; 21/04/2014 error: Java Virtual Machine could not be created.
that has at least one Java error (hence it is getting Java acc in% PAATH%, but Java is used to view the whole string What is to be done as an argument? I have no idea.
What is the correct formatting here? Anybody appreciated a lot of help!
You probably need to split the argument into a list, such as:
Unless otherwise stated, this Anu The order sequence is recommended to pass.
Instead of:
subprocess.Popen (['Java', '-xmx 1024m -classpath.com.foo.Bar '] #Error (Invalid For Maximum Usage: Subprocess .Popen ([' Java ',' -Xmx1024M ',' -classpath ',' ',' com.foo.Bar '] # Ok Also see Windows-specific.
Renewed : If you need features The shell, such as the redirect to the file using & gt; It is, then you must include the shell = T rue argument, for example: Upprkriya. As described in the comment of Popin ('echo eu & gt; Deleteme.txt', shell = true) or JF Sebastian (copied here for convenience), Specify the stdout argument: subprocess.call (['echo', 'foo'], stdout = open ('deleteme.txt', 'wb')) :
Passing a shell = true security can be if combined with untrusted input.
Comments
Post a Comment