我目前正在重寫一個我曾經用C++編寫的python中的小包裝程序。它從一個文件中提取文件並以另一種格式將它們裝箱。subprocess.popen()的實時輸出,而不是一行一行
在C++中,我需要運行的系統命令的輸出是「實時」,即狀態欄和實時顯示的某些命令的百分比指示符。使用python,我可以將每個「百分比」單獨放在屏幕上(因爲我一行一行地閱讀它)。下面是一個例子:多數民衆贊成在一個狀態欄看起來在python版本(這一直持續到100)。在C++中,它確實會自行更新。
| (02/100)\rImporting AVC-H264: | | (03/100)\rImporting AVC-H264: | | (04/100)\rImporting AVC-H264: |=
那相應的Python代碼:
p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
for line in iter(p.stdout.readline, ""):
print line,
上我怎麼可能使它看起來像在C++中的任何想法?
感謝您的答案。我玩這個解決方案,我認爲它必須是沿着這個線: 而1: data = p.stdout.read() sys.stdout.write(data) #過程完成所以打破 如果p.returncode不是無: 中斷 問題是,現在它在屏幕上立即轉儲所有內容,但在彼此之下,它仍然不會覆蓋自己。 我無法理解p.stdout.read()返回的內容。它決定哪些點「這就是我要回來」? – Basil 2011-01-07 21:18:11