簡體   English   中英

在python中運行一個子進程,都以“實時”顯示輸出並將其保存到變量中

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM