0
我是一個新的Python編程和編程以及。如果這個聲音是一個基本問題,那麼請原諒。需要更好地進行子進程通信
我正在開發一個工具,它當然會在git上進行清潔和製作。
我正在使用子進程模塊來運行這些make命令。
一個觀察結果是:我使用通信來查看make命令的結果。通信問題是,它等待subprocess.popen完成併發送輸出。
如果make命令運行30分鐘,屏幕上沒有輸出30分鐘,然後通信將整個數據發送到30分鐘。
問題是:有沒有辦法從子進程中獲取輸出,以及何時在stdout上顯示某些內容,然後將其輸出到屏幕上?
,我迄今編寫的代碼是:
def makeClean(path,cmd1='make',cmd2='clean'):
print '+++++++++++ RUNNING MAKE CLEAN +++++++++++ \n'
c = subprocess.Popen([cmd1 , cmd2],stdout = subprocess.PIPE, stderr = subprocess.PIPE,cwd = path)
out = c.communicate()[0]
for line in out.split('\r\n'): print line
對這個有什麼想法?我試着用pexpect.run(),但並沒有爲我工作...
-Vijay
我的腳本打印腳本日誌到控制檯和一個文件。當我使用subprocess.call時,腳本日誌永遠不會去一個文件..但subprocess.Popen的第二個解決方案爲我工作..感謝您的輸入。 – user596922
另一個快速的問題..我用第二個建議,但在每一行的末尾插入一個新的行..我如何克服它? – user596922
@ user596922:它不插入*換行符,它*保留*原始輸入中的換行符,就像Python的文本IO方法總是這樣做的。你可以調用線條上的'strip'方法來刪除它。 –