2012-04-20 76 views
4

我運行下面的一段代碼(稱之爲batch.py​​)Python:爲什麼print語句和subprocess.call()輸出不同步?

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

而且batch.py​​的輸出重定向到另一個文件。即

./batch.py​​> output.txt的

但我意識到,從subprocess.call()輸出所有print語句之前去。爲什麼輸出不同步?

回答

9

由於您將其輸出重定向到文件而不是控制檯,因此Python會阻止其自己的輸出,並且不會在subprocess.call()之前對其進行刷新,您需要強制行緩衝或禁用緩衝,或在子流程調用之前手動刷新。

+0

如何「刷新」打印語句? – CodeNoob 2012-04-20 21:25:00

+5

'sys.stdout.flush()' – Fenikso 2012-04-20 21:26:10

相關問題