簡體   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