将subprocess.call的ping输出结果输出到文本文件

时间:2015-02-10 17:39:23

标签: python variables subprocess ping

我正在尝试使用Python ping Windows中的IP地址。我想将ping的结果输出到文本文件中,但我不知道如何使用subprocess.call函数执行此操作。我知道如何将变量写入文件,但我不知道如何将subprocess.call中的任何内容分配给变量。

例如,如果我进行了ping操作,我希望文本文件看起来像这样

Pinging 127.0.0.1 with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Ping statistics for 127.0.0.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

我该怎么做?

1 个答案:

答案 0 :(得分:1)

如果您在合理的shell中调用ping(例如cmd.exe),则可以使用I / O重定向:

ping 127.0.0.1 > file

>表示程序的输出被写入给定文件。

如果你把它称为python子流程(不容易从你的问题中得出),你可以使用Popen

with open('output.txt', 'w') as output:
    process = subprocess.Popen('ping 127.0.0.1', stdout=output)
    process.communicate()