1

我可以使用 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)

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

4

2 回答 2

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)
于 2013-09-17T10:08:37.690 回答
1

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

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

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

subprocess另一种解决方案是手动使用模块和管理文件处理程序。这具有跳过外壳的优点(它更快,在某些情况下更安全):

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

请注意,您可以使用stdout. 例如,将其保存为字符串。

于 2013-09-17T09:39:58.400 回答