繁体   English   中英

使用python运行另一个程序?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM