2013-06-12 33 views
0

給出下面的Python命令:如何從Python os.system()讀取命令行反饋?

os.system('snmpget -v 3 -u initial 172.17.171.113 1.3.6.1.2.1.1.5.0') 
a=raw_input() // in order to be able to see the result. I dont want the windows to close at the end. 

我怎麼能看這種命令行命令的結果,第?

我想串= os.read(使用os.system,10)

,但它不是工作...任何想法? (我正在使用Windows XP)

回答

0

以及通常我使用

import os 


output = os.popen("snmpget -v 3 -u initial 172.17.171.113 1.3.6.1.2.1.1.5.0").read() 
1

用你的眼睛。

os.system只會將一個數字返回給您的進程。您應該使用subprocess module讀取標準輸出返回到你的過程

subprocess.check_output

result = subprocess.check_output(['snmpget', '-v', '3', '-u', 'initial', 
            '172.17.171.113', '1.3.6.1.2.1.1.5.0']) 
+0

所以,我怎麼能從命令行執行並得到結果? – user2162550

3
import subprocess 
output, error = subprocess.Popen('snmpget -v 3 -u initial 172.17.171.113 1.3.6.1.2.1.1.5.0'.split(), stdout=subprocess.PIPE).communicate() 

OR

import subprocess 
output = subprocess.check_output('snmpget -v 3 -u initial 172.17.171.113 1.3.6.1.2.1.1.5.0'.split()) 

output包含命令的輸出。

+0

謝謝!有沒有辦法讓字符串allready「解析」?我的意思是像發送函數兩個變量,並獲得每個變量的另一個值,而不是所有的字符串'輸出'變量? – user2162550

+0

我不明白。你想一行一行嗎? – falsetru

+0

如果結果是一個類似於「name:xxxx,value:yyyyy」的字符串,那麼發送函數變量a和b將導致a = xxx和b = yyy – user2162550

1

os.system不會返回該命令的輸出。它返回執行命令的退出狀態。零,在成功執行時,在無效命令上非零。

如果你想讀的輸出,使用命令模塊被別人提到

import commands 

output = commands.getoutput("snmpget -v 3 -u initial 172.17.171.113 1.3.6.1.2.1.1.5.0") 

====process output==== 

或者使用子模塊!

希望它有幫助!

+2

這是做它的老方法。子過程模塊現在是首選方式。 –

+0

好的。謝謝你讓我知道。但它仍然有效。無論如何更新了我的答案。 – rajpy