将subprocess.call的ping结果输出到文本文件
我试图用Python在Windows中ping IP地址。我想将ping的结果输出到文本文件中,但我不知道如何使用subprocess.call函数来执行此操作。我知道如何将变量写入文件,但我不知道如何将subprocess.call中的任何内容分配给变量。将subprocess.call的ping结果输出到文本文件
例如,如果我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
我将如何做到这一点?
如果你在一个合理的外壳调用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()
* subprocess.check_output *会更简单 – volcano 2015-02-10 17:55:32
是的,我将它称为Python子流程。对不起,如果不明确。 – Darkshadows 2015-02-11 00:03:42
@ volcano:没有。 'check_output()'在这里*不适用。 – jfs 2015-02-11 02:09:19
如何斗你叫平? – 2015-02-10 17:41:34