2010-02-23 79 views
3

我已經創建了一個腳本來對一批文件運行一個測試腳本,它已經在夜間進行了兩個晚上的測試,但是它只是停留在某個點上。是否對Python中的command.getstatusoutput()緩衝區有限制

我想知道command.getstatusoutput()是否是這裏的問題,因爲測試腳本有一個沉重的日誌記錄機制。

更新:
如何使用子進程模塊功能不同於使用os.system()哪種做事方式更好?

回答

6

方法getstatusoutput()返回一個字符串,該字符串可能非常長,因此佔用大量空間並導致分頁到磁盤和其他令人討厭的事情。

由於commands模塊無論如何都被棄用,所以最好使用subprocess模塊,它提供了類似於文件的訪問過程輸出。如果您需要爲以後的輸出,只是把它寫在文件中的硬盤上

cmd = subprocess.Popen(['ls'], stdout=file('output', 'w')) 

如果你想程序處理輸出,讀stdout中這樣

cmd = subprocess.Popen(['ls'], stdout=subprocess.PIPE) 
for line in cmd.stdout: 
    do_stuff(line) 

這將是更容易上你的記憶。