2015-02-10 127 views
0

我試圖用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 

我將如何做到這一點?

+0

如何鬥你叫平? – 2015-02-10 17:41:34

回答

1

如果你在一個合理的外殼調用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() 
+0

* subprocess.check_output *會更簡單 – volcano 2015-02-10 17:55:32

+0

是的,我將它稱爲Python子流程。對不起,如果不明確。 – Darkshadows 2015-02-11 00:03:42

+0

@ volcano:沒有。 'check_output()'在這裏*不適用。 – jfs 2015-02-11 02:09:19