使用python如何只读取ping结果的第一行?

时间:2014-02-01 07:45:40

标签: python python-2.7 python-3.x ping

如何使用python只读取第一行ping结果?在读取ping结果时,python返回多行。所以我想知道如何阅读和保存第一行输出?代码不仅应该用于ping,而且应该适用于像“ifstat”这样的工具,这会再次返回多行结果。

3 个答案:

答案 0 :(得分:2)

使用subprocess.check_output运行命令,并返回第一个splitlines():

 import subprocess
 subprocess.check_output(['ping', '-c1', '192.168.0.1']).splitlines()[0]

安德烈亚斯

答案 1 :(得分:0)

您可以使用subprocess.check_outputstr.splitlines。这里subprocess.check_output运行命令并以字符串形式返回输出,您可以使用str.splitlines()[0]获取第一行。

>>> import subprocess
>>> out = subprocess.check_output('ping google.com -c 1', shell=True)
>>> out.splitlines()[0]
'PING google.com (173.194.36.78) 56(84) bytes of data.'

请注意,使用shell=True运行不受信任的命令可能会很危险。所以,更好的方法是:

>>> import shlex
>>> command = shlex.split('ping google.com -c 1')
>>> out = subprocess.check_output(command)
>>> out.splitlines()[0]
'PING google.com (173.194.36.65) 56(84) bytes of data.'

答案 2 :(得分:0)

如果你有str变量ping_result的输出,请先在数组http://docs.python.org/2/library/stdtypes.html#str.split中进行拆分和访问。像这样:

first_line = ping_result.split(' \ n')[0]