[英]Run a subprocess in python and both show the output in “real time” and save it to a variable
我希望能夠從python代碼運行一個子流程,並且都可以實時查看輸出,並且一旦該流程完成,就將輸出保存在變量中
現在我要做兩件事之一
1)使用subprocess.call運行子流程,在這種情況下,我實時獲取輸出,但最后沒有變量輸出(我想解析它並從中提取值)
2)在這種情況下,使用subprocess.check_output運行子流程,我將輸出保存在變量中,但是如果我想查看它,則必須“手動”打印
有沒有辦法讓兩件事“在一起”?
希望很清楚,如果您需要,我可以添加我的代碼
謝謝 !!!
編輯:
這是我當前的代碼
我添加了一個超時可選參數(默認值為1200,還處理了shell(由於某些原因,如果我沒有shell = True,則在Linux中可以使用的相同命令在Windows中將無法使用))“ mode”參數是一個我可以用來區分需要“實時”輸出的情況,而不必解析它以及其他情況
我想知道是否有一種更清潔,更好的方法來達到相同的結果
假設您嘗試運行某些命令your_command
可以使用以下命令:
some_proc = subprocess.Popen(['your_command'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout=subprocess.PIPE
成功時將結果標准輸出。 之后,您可以按以下方式訪問輸出:
store_in_var = some_proc.stdout
現在您可以解析store_in_var
import subprocess
from subprocess import PIPE
comd = input('command here : ')
comds = comd.split(' ')
f = subprocess.run(comds, shell= True,stdout=PIPE, stderr=PIPE)
result = f.stdout.decode()
errors = f.stderr.decode()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.