使用 Python 运行另一个程序?

26 浏览
0 Comments

使用 Python 运行另一个程序?

这个问题已经有了答案:

如何执行程序或调用系统命令?

我有一个从命令行运行的程序,它看起来像这样:

$ 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 代码运行我的程序。

有人可以帮忙吗?提前感谢!

admin 更改状态以发布 2023年5月21日
0
0 Comments

subprocess.Popen 需要一个字符串数组。该数组中的两个项是文件句柄。你需要传递实际的文件名给你要运行的程序。

cmd = ['/Users/me/src/program', 'a.txt', 'b.txt']

你可以完全摆脱 with open(...) as ... 这行。

0
0 Comments

看看@Chris的答案,还有:

Subprocess 不等待命令完成,因此你应该使用 wait 方法。

process = subprocess.Popen(cmd, stdout=subprocess.PIPE)
process.wait()
for line in process.stdout:
    print(line)

0