簡體   English   中英

Python:為什么打印語句和 subprocess.call() 輸出不同步?

[英]Python: why print statements and subprocess.call() output are out of sync?

我正在運行以下代碼(稱為batch.py​​)

for config in keystoneConfig: 
    cmdlist = generate_cmd_list(config)
    print ' '.join(cmdlist)
    subprocess.call(cmdlist)

並將 batch.py​​ 的輸出重定向到另一個文件。 IE

./batch.py​​ > 輸出.txt

但我意識到subprocess.call()所有輸出都在print語句之前。 為什么輸出不同步?

Python 正在塊緩沖它自己的輸出,而不是在subprocess.call()之前刷新它,因為您將其輸出重定向到文件而不是控制台; 您需要強制行緩沖或禁用緩沖,或在子進程調用之前手動刷新。

在打印之后和進行子進程調用之前使用sys.stdout.flush()進行刷新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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