2012-08-26 54 views
2

當我做在Python中的東西爲:如何消除Python中的subprocess.Popen的標準輸出?

ping = subprocess.Popen("ping -n 1 %s" %ip, stdout=subprocess.PIPE) 

它總是打印出屏幕:

(subprocess.Popen object at 0x....) 

這對我來說有點討厭。你知道如何避免標準輸出嗎?

+0

你如何運行它?它不應該產生這樣的輸出 – jfs

+1

運行'ping = subprocess.Popen(['ping','127.0.0.1'],stdout = subprocess.PIPE)'不產生輸出。 – Blender

+0

請參閱這裏[如何使用子進程ping多個主機](http://stackoverflow.com/a/12102040/4279) – jfs

回答

2

它看起來像你試圖通過在你的例子中打印ping變量從過程中獲得標準輸出。這是subprocess.Popen對象的錯誤用法。爲了正確使用subprocess.Popen這是你寫的:

ping_process = subprocess.Popen(['ping', '-c', '1', ip], stdout=subprocess.PIPE) 

# This will block until ping exits 
stdout = ping_process.stdout.read() 
print stdout 

我也改變時使用的平的參數,因爲-n是在我的機器實現了無效的參數。

+2

'stdout = ping_process.communicate()[0]' – jfs

相關問題