记录ping结果python?

时间:2013-09-17 09:37:24

标签: python logging ping

我可以使用ping命令并使用以下行保存输出:

command = os.system('ping 127.0.0.1 > new.txt')

但是每次运行脚本时,文本文件都会被覆盖,所以我只保存了最后一次ping。我已经查看了日志记录但无法找到一种方法将ping请求的输出保存到文本文件中而无需过度编写。

我试过了:

logging.debug(command = os.system('ping 127.0.0.1'))

但这引发了一个错误:debug()至少需要1个参数(给定0)

任何帮助将不胜感激,谢谢!

2 个答案:

答案 0 :(得分:2)

您可以获得subprocess.check_output的结果并将其写入文件:

import subprocess
result = subprocess.check_output(['ping', '127.0.0.1'])
with open("new.txt", "a") as myfile:
    myfile.write(result)

答案 1 :(得分:1)

如果您坚持使用os.system,那么只需使用>>重定向:

command = os.system('ping 127.0.0.1 >> new.txt')

这会将新数据附加到new.txt而不是覆盖它。

另一种解决方案是使用subprocess模块并手动管理文件处理程序。这有利于跳过shell(它更快,在某些情况下更安全):

import subprocess
out = open('new.txt', 'a')
subprocess.call(['ping', '127.0.0.1'], stdout = out)
out.close()

请注意,您可以使用stdout执行其他操作。例如,将其保存为字符串。