Python 2.7 子进程调用方法不适用于 运行 java 命令
Python 2.7 subprocess call method not working to run java command
我正在尝试使用 python 脚本来操作我的 java 程序的输入文件。我这样做的方式是生成文件名并将其传递给 subprocess.call()
方法来执行。这是我的程序:
def execJava(self):
self.thisCmd="pause"
call(self.javaCmd,shell=True)
call(self.pauseCmd,shell=True)
其中,
self.javaCmd = 'java -ea -esa -Xfuture -Xss64m -classpath "C:\FVSDK_9_1_1\lib\x86_64\msc_12.0-sse2_crtdll\*" -Djava.library.path="C:\FVSDK_9_1_1\lib\x86_64\msc_12.0-sse2_crtdll;C:\FVSDK_9_1_1\lib\x86_64\share" com.cognitec.jfrsdk.examples.MatchFIRAgainstGallery C:\FVSDK_9_1_1\etc\frsdk.cfg 0 .\tmp\frsdk-scratch\probe_1.fir .\tmp\test\*'
是的,这是一个很长的复杂 java 指令,但是当我 运行 它在命令提示符下时它工作正常。只有当我将它作为字符串传递时,它才不会 运行 和 returns:
Exception in thread "main" java.lang.Error
经过一番探究,发现是由于指令中有\x
、\t
,所以执行的是
.\tmp\test\*
作为
mp est\*
因为它在执行时用制表符 space 替换了 \t
。我查了很多,没有找到任何解决方案。非常感谢任何帮助。
在您的路径中使用正斜杠“/”而不是反斜杠“\”。
我正在尝试使用 python 脚本来操作我的 java 程序的输入文件。我这样做的方式是生成文件名并将其传递给 subprocess.call()
方法来执行。这是我的程序:
def execJava(self):
self.thisCmd="pause"
call(self.javaCmd,shell=True)
call(self.pauseCmd,shell=True)
其中,
self.javaCmd = 'java -ea -esa -Xfuture -Xss64m -classpath "C:\FVSDK_9_1_1\lib\x86_64\msc_12.0-sse2_crtdll\*" -Djava.library.path="C:\FVSDK_9_1_1\lib\x86_64\msc_12.0-sse2_crtdll;C:\FVSDK_9_1_1\lib\x86_64\share" com.cognitec.jfrsdk.examples.MatchFIRAgainstGallery C:\FVSDK_9_1_1\etc\frsdk.cfg 0 .\tmp\frsdk-scratch\probe_1.fir .\tmp\test\*'
是的,这是一个很长的复杂 java 指令,但是当我 运行 它在命令提示符下时它工作正常。只有当我将它作为字符串传递时,它才不会 运行 和 returns:
Exception in thread "main" java.lang.Error
经过一番探究,发现是由于指令中有\x
、\t
,所以执行的是
.\tmp\test\*
作为
mp est\*
因为它在执行时用制表符 space 替换了 \t
。我查了很多,没有找到任何解决方案。非常感谢任何帮助。
在您的路径中使用正斜杠“/”而不是反斜杠“\”。