【发布时间】:2011-08-26 17:49:53
【问题描述】:
我真的遇到了一个问题,希望有人能帮助我。我正在尝试在 Python3.1 中为名为@987654322@ 的命令行程序创建一个包装器。我可以像这样在命令行上成功运行这个程序:
$ spooky -a 4 -b .97
我对 spooky 的第一次 Python 包装器尝试如下所示:
import subprocess
start = "4"
end = ".97"
spooky_path = '/Users/path/to/spooky'
cmd = [spooky_path, '-a', start, '-b', end]
process = subprocess.Popen(cmd, stdout=subprocess.PIPE)
process.wait()
print('Done')
以上代码打印Done,但不执行程序spooky
接下来我尝试像这样在命令行上执行程序:
$ /Users/path/to/spooky -a 4 -b .97
上面的代码也失败了,并且没有提供任何有用的错误。
我的问题是:如何通过将spooky -a 4 -b .97 发送到命令行来让 Python 运行该程序?我非常感谢您能提供的任何帮助。提前致谢。
【问题讨论】:
-
首先你必须调查为什么后面的命令行调用不起作用。除非你没有解决这个问题,否则你不必考虑你的 python 方法。您的命令行调用会产生哪些“有用的错误”?
-
...所以当您输入
spooky时它会运行,但是当您给它完整路径时它不会运行...明显的原因是完整路径是错误的。 -
通过将其与
which spooky进行比较来检查这是否真的是正确的路径。 -
在不相关的说明中,我认为
subprocess.call会比subprocess.Popen更明显。 -
@Gerret 是的,它在输入
spooky或spooky -a 4 -b .97时在命令行上运行。如果我输入完整路径,它也可以工作,但是如果我输入带参数的完整路径,它就不起作用('/Users/path/to/spooky -a 4 -b .97')
标签: python subprocess wrapper