說,我有命令列實用程式,其中輸出檔案是強制性引數:
process_data <output file>
我想要的是能夠從 Python 代碼運行這個 CMD 命令,而不是將結果存盤到檔案中,而是將其存盤到 Python 變數中(有點重定向它):
variable = None # currently empty
os.system(f"process_data {variable}")
在實用程式運行時結束時,我希望將內容放入該變數中,該變數應該寫入“輸出檔案”:
print("output: ", variable)
output: "Data is processed successfully, here is the content of processing: ..."
uj5u.com熱心網友回復:
呼叫外部程式的一種更簡潔的方法是使用 pythonsubprocess模塊。你有兩種主要的使用方式。
如果您只想呼叫程式并等待輸出而不捕獲它:
import subprocess
variable = None
subprocess.call(["process_data", variable])
輸出將列印在標準輸出中,但您不會在 python 變數中得到它。
但是,您也可以使用附加引數指定不向用戶顯示輸出。
如果要將輸出存盤在變數中:
import subprocess
variable = None
out = subprocess.check_output(["process_data", variable])
編輯:在我的例子中,變數是一個引數process_data,而不是存盤輸出的變數
uj5u.com熱心網友回復:
解決方案在這里:
variable = None
response = subprocess.run(["process_data", "/dev/stdout"], capture_output=True)
variable = response.stdout
如果是文本輸出,我建議添加“text=True”標志:
response = subprocess.run(["process_data", "/dev/stdout"], capture_output=True, text=True)
最好有一個“timeout=...”標志,以防你的 cmd 掛起:
response = subprocess.run(["process_data", "/dev/stdout"], capture_output=True, text=True, timeout=10)
不要忘記經常檢查:
if response.returncode != 0:
# do something :)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/495801.html
