使用python运行另一个程序?

2024-04-25 09:19:52 发布

您现在位置: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)

我读了this post和posthere,它们似乎描述了我的问题的类似解决方案。不幸的是,在阅读了这些文章之后,我仍然不能让我的Python代码运行我的程序。

有人能帮忙吗?提前谢谢!


Tags: 命令行程序txtcmdmodeaswithstdout
3条回答

根据您的需求,os.system(cmdline)可能是simples解决方案。

看看@Chris's answer,还有:

子进程不会等待命令完成,因此应该使用wait方法。

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

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

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

完全可以去掉with open(...) as ...行。

相关问题 更多 >