用python运行另一个程序?

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)

  • 谢谢你指出`wait`方法 - 我不知道这个. (2认同)

Chr*_*rle 19

subprocess.Popen期待一个字符串数组.该数组中的两个项目是文件句柄.您需要将实际文件传递给您尝试运行的程序.

cmd = ['/Users/me/src/program', 'a.txt', 'b.txt']
Run Code Online (Sandbox Code Playgroud)

你可以with open(...) as ...完全摆脱线条.


Ach*_*him 8

根据您的要求,os.system(cmdline)可能是简单的解决方案.