drb*_*sen 11 python subprocess python-3.x
我有一个程序,我从命令行运行,如下所示:
$ 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)
Run Code Online (Sandbox Code Playgroud)
我在这里阅读了这篇文章和帖子,它似乎描述了我的问题的类似解决方案.不幸的是,在阅读这些帖子之后,我似乎仍然无法使我的Python代码运行我的程序.
有人可以帮忙吗?提前致谢!
utd*_*mir 21
看看@Chris的答案,还有:
子进程不等待命令完成,因此您应该使用wait方法.
process = subprocess.Popen(cmd, stdout=subprocess.PIPE)
process.wait()
for line in process.stdout:
print(line)
Run Code Online (Sandbox Code Playgroud)
Chr*_*rle 19
subprocess.Popen期待一个字符串数组.该数组中的两个项目是文件句柄.您需要将实际文件名传递给您尝试运行的程序.
cmd = ['/Users/me/src/program', 'a.txt', 'b.txt']
Run Code Online (Sandbox Code Playgroud)
你可以with open(...) as ...完全摆脱线条.