2013-09-17 2 views
1

я могу использовать команду звона и сохранить вывод, используя следующую строку:Запись результатов ping python?

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

Однако каждый раз, когда скрипт запускается текстовый файл переписывается так я только последний пинг сохранен. Я просмотрел журнал, но не могу найти способ сохранить выходы запросов ping в текстовый файл без написания.

Я пробовал:

logging.debug(command = os.system('ping 127.0.0.1')) 

Но это бросает ошибку с: отладки() занимает по меньшей мере один аргумент (0 дано)

Любая помощь будет признателен, спасибо!

+0

вы пробовали 'команду = os.system ('пинг 127.0.0.1 >> new.txt')'? – gefei

+0

Да что работает спасибо! – xcc140

ответ

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) 
+0

Спасибо, это работает очень хорошо! – xcc140

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. Например, сохраните его в строке.

+0

Спасибо, что бы вы порекомендовали с помощью os.system? – xcc140

+0

Это нормально, если решение os.system работает для вас. Но я все же отредактировал ответ с подпроцессом. – ash

+0

Приведенный выше пример подпроцесса перезаписывает текстовый файл, хотя я использовал 'a' с: out = open ('new.txt', 'a') – xcc140

Смежные вопросы