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