【问题标题】:How to execute an external program如何执行外部程序
【发布时间】:2012-11-24 22:41:08
【问题描述】:

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

【问题讨论】:

  • 为什么不在脚本中写下文件的完整路径?
  • -mx256m 应该是-Xmx256m
  • 谢谢,@AndrewThompson 你的评论很有用!

标签: java python ipc


【解决方案1】:

使用 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的路径。”

【讨论】:

  • 嗯!奇怪的事情发生了!我收到了这个错误:OSError: [Errno 2] No such file or directory: 'home/karen/sphinx4-1.0beta5-src/sphinx4-1.0beta5/'
  • 我修复了它更改命令:subprocess.Popen(["java -Xmx256m -jar bin/HelloWorld.jar"],cwd=r'/home/karen/sphinx4-1.0beta5-src/sphinx4-1.0beta5/', shell=True)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2012-12-09
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 2014-07-15
    相关资源
    最近更新 更多