2015-02-10 2 views
0

Я пытаюсь выполнить ping IP-адрес в Windows с помощью Python. Я хочу вывести результат ping в текстовый файл, но я не знаю, как это сделать с помощью функции subprocess.call. Я знаю, как писать переменные в файл, но я не знаю, как назначить что-либо из subprocess.call для переменной.Результат вывода ping с subprocess.call в текстовый файл

Например, если я свистел, я хотел бы, чтобы текстовый файл, чтобы посмотреть, как этот

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

Как доу вы звоните пинг? –

ответ

1

Если вы звоните ping в разумном оболочки (например cmd.exe), вы можете использовать перенаправление ввода/вывода:

ping 127.0.0.1 > file 

> означает, что выход программы записывается в указанный файл.

Если вы называете это как питон подпроцесса (не легко вывести из вашего вопроса), вы можете использовать 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

+0

Да, я называю его подпроцессом Python. Извините, если это не ясно. – Darkshadows

+0

@volcano: нет. 'check_output()' is * not * подходит здесь. – jfs