如何执行外部程序

时间:2012-11-24 22:41:08

标签: java python ipc

我正在尝试从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程序执行它!

2 个答案:

答案 0 :(得分:6)

使用cwd参数

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

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

答案 1 :(得分:0)

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