用Python运行另一个程序?
我有一个程序,可以通过命令行运行,命令是这样的:
$ program a.txt b.txt
这个程序需要两个文本文件作为输入。我想写一个Python 3.2的脚本来运行这个程序。请问我该怎么做呢?目前,我尝试使用subprocess
模块,代码是这样的:
import subprocess
with open("a.txt", mode="r") as file_1:
with open("b.txt", mode="r") as file_2:
cmd = ['/Users/me/src/program', file_1, file_2]
process = subprocess.Popen(cmd, stdout=subprocess.PIPE)
for line in process.stdout:
print(line)
我看了这篇帖子和这篇帖子,它们似乎提供了类似的解决方案。不过,读完这些帖子后,我还是无法让我的Python代码成功运行这个程序。
有没有人能帮帮我?提前谢谢!
4 个回答
13
根据你的需求,os.system(cmdline)
可能是最简单的解决办法。
28
看看@Chris的回答,还有:
子进程不会等命令执行完,所以你应该使用wait
方法。
process = subprocess.Popen(cmd, stdout=subprocess.PIPE)
process.wait()
for line in process.stdout:
print(line)
24
subprocess.Popen
这个函数需要一个字符串数组,也就是一组文本。这个数组里有两个项目是文件句柄。你需要把实际的文件 名字 传给你想要运行的程序。
cmd = ['/Users/me/src/program', 'a.txt', 'b.txt']
你可以完全去掉 with open(...) as ...
这一行代码。