如何从Python os.system()中读取命令行反馈?

时间:2013-06-12 06:36:02

标签: python

给出以下Python命令:

 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.

如何读取此命令行命令的结果?

我试过string = os.read(os.system,10)

但它不起作用......任何想法? (我使用的是Windows XP)

5 个答案:

答案 0 :(得分: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包含命令输出。

答案 1 :(得分:1)

用你的眼睛。

os.system只返回一个回到您的进程的数字。您应该使用subprocess module将stdout读回您的流程

例如

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'])

答案 2 :(得分: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====

或使用其他人提到的子流程模块!

希望它有所帮助!

答案 3 :(得分:1)

通常我正在使用

import os


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

答案 4 :(得分:0)

本地做这件事会不会更好?