[英]Using python to run another program?
我有一个从命令行运行的程序,如下所示:
$ 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 代码运行我的程序。
任何人都可以帮忙吗? 提前致谢!
看看@Chris 的回答,还有:
子进程不等待命令完成,所以你应该使用wait
方法。
process = subprocess.Popen(cmd, stdout=subprocess.PIPE)
process.wait()
for line in process.stdout:
print(line)
subprocess.Popen
需要一个字符串数组。 该数组中的两个项目是文件句柄。 您需要将实际文件名传递给您尝试运行的程序。
cmd = ['/Users/me/src/program', 'a.txt', 'b.txt']
您可以完全摆脱with open(...) as ...
行。
根据您的要求, os.system(cmdline)
可能是最简单的解决方案。
不建议将subprocess.wait()
与stdout=subprocess.PIPE
使用。
with subprocess.Popen(cmd, stdout=subprocess.PIPE) as proc:
print(proc.stdout.read())
您不必调用subprocess.wait()
。 这将打印proc
实时标准输出,父进程将等待proc
的终止。
检查这些网址以获取更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.