用Python运行另一个程序?

15 投票
4 回答
53986 浏览
提问于 2025-04-16 22:54

我有一个程序,可以通过命令行运行,命令是这样的:

$ 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 ... 这一行代码。

撰写回答