如何执行外部程序

4

我正在尝试从Python程序中执行Java程序:

subprocess.Popen(["java -mx256m -jar /sphinx4-1.0beta5/bin/HelloWorld.jar"], shell=True)

但出现以下错误:
Error: Unable to access jarfile /sphinx4-1.0beta5/bin/HelloWorld.jar

我需要进入特定目录:/home/karen/sphinx4-1.0beta-src,才能执行命令:"java -mx256m -jar /sphinx4-1.0beta5/bin/HelloWorld.jar"。但是我不知道如何做到这一点。我希望我的Python程序可以执行它!


为什么不在你的脚本中直接写文件的完整路径呢? - alexvassel
1
应该将“-mx256m”更改为“-Xmx256m”。 - Andrew Thompson
2个回答

6
使用 cwd 参数。
subprocess.Popen(["java -mx256m -jar ../sphinx4-1.0beta5/bin/HelloWorld.jar"], cwd=r'path', shell=True)

如果cwd不是None,子进程在执行前会把当前目录更改为cwd。请注意,在搜索可执行文件时不会考虑该目录,因此无法相对于cwd指定程序的路径。http://docs.python.org/2/library/subprocess.html

嗯!出现了一些奇怪的事情!我收到了这个错误:OSError: [Errno 2] No such file or directory: 'home/karen/sphinx4-1.0beta5-src/sphinx4-1.0beta5/' - karensantana
我通过更改命令来修复它:subprocess.Popen(["java -Xmx256m -jar bin/HelloWorld.jar"],cwd=r'/home/karen/sphinx4-1.0beta5-src/sphinx4-1.0beta5/', shell=True) - karensantana

0

你的问题可能与jar文件的路径有关。你的代码在popen调用中最有可能调用/home/Karen/sphynx4-1beta-src。这不是一个适用于不同系统的解决方案,除非文件在相同的绝对路径下。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接