【问题标题】:subprocess.call() not working Pythonsubprocess.call()不工作Python
【发布时间】:2014-05-18 00:41:20
【问题描述】:

我正在尝试从我的脚本将参数传递给以C 编写的可执行文件,但是,该程序未执行,并且在运行可执行文件时不会出现控制台窗口。

我尝试使用os.system() and subprocess.call()return 0 运行可执行文件,我认为这意味着命令执行成功,但我的可执行文件没有运行。

我在这里错过了什么?

subprocess.call(["C:\Program Files (x86)\Hello\myApp.exe", "-i abc.txt -o xyz.pdf"],shell=True)

os.system('"'+'C:\Program Files (x86)\Hello\myApp.exe -i abc.txt -o xyz.pdf'+'"');

我也尝试过不带参数运行,但程序仍然没有执行。

【问题讨论】:

  • 你能指定“不运行”是什么意思吗?如果这等于“打开控制台窗口”,那么我可以告诉你它不一样。您需要额外的参数来告诉应用程序打开一个新的控制台而不是使用 python 的控制台。

标签: python-2.7 cmd subprocess system-calls


【解决方案1】:

除非myApp.exedir等shell命令;不要在 Windows 上使用shell=True

如果您使用列表参数,那么每个列表项都应该是您程序的单独参数:

from subprocess import check_call

check_call([r'C:\Program Files (x86)\Hello\myApp.exe', #NOTE: `r''` literal
            '-i', 'abc.txt', '-o', 'xyz.pdf'])

【讨论】:

  • 我试过这个还是不行。我还尝试通过在 python 中更改我当前的工作目录然后通过os.system(r'myApp.exe') subprocess.call([r'myApp.exe']); and by subprocess.check_call 调用 exe 来运行可执行文件,但可执行文件仍然无法运行。
  • @user2498079:“不工作”信息量不大。如果您按原样运行我的答案中的代码会发生什么?
  • 什么都没有。没有弹出控制台窗口,也没有生成输出文件。
  • @user2498079:好的。您是从命令行、空闲还是某些 IDE 运行它?如果您输入 'echo' 而不是 r'C:\Prog...\myApp.exe',会发生什么情况?
  • 得到错误:` Traceback(最近一次调用最后):文件“”,第 29 行,在 文件“C:\Python27\lib\subprocess.py”,第 535 行,在 check_call retcode = call(*popenargs, **kwargs) 文件“C:\Python27\lib\subprocess.py”,第 522 行,在调用中返回 Popen(*popenargs, **kwargs).wait() 文件“C :\Python27\lib\subprocess.py”,第 709 行,在 init 中 errread, errwrite)文件“C:\Python27\lib\subprocess.py”,第 957 行,在 _execute_child 启动信息中)WindowsError: 【错误2】系统找不到指定的文件`
猜你喜欢
  • 2017-09-24
  • 2018-10-17
  • 1970-01-01
  • 2018-10-18
  • 2020-02-27
  • 2019-12-05
  • 2013-05-14
  • 2017-02-10
  • 1970-01-01
相关资源
最近更新 更多