2014-01-21 3 views
2

Пожалуйста, простите меня за простой вопрос о python. Это мой первый опыт использования python.Что печатает этот номер после выполнения моего скрипта python

Я пишу этот скрипт на mac book pro на данный момент. Вероятно, он будет развернут на сервере Centos позже. Сценарий захватывает файл как аргумент. Я обработаю результат позже.

#!/usr/bin/python 
import sys 
import subprocess 

if len(sys.argv) < 2: 
    print ("Not enough arguments") 
    print ("Usage: " + sys.argv[0] + " log_file output_file") 
    print ("i.e. " + sys.argv[0] + " stream.log output.csv") 
    sys.exit(1) 
else: 
    input = open (sys.argv[1]) 
    output = open (sys.argv[2],'w') 

proc = subprocess.Popen("cat " + input.name + " | cut -d ',' -f 3 | sort | uniq | wc -l", shell=True) 

print "got here" 
output.close() 
print "got here22222" 
input.close() 

Я только что запустил его с терминала и выполнил его. Тем не менее, после того, как он печатает последний

получил here22222

есть задержка в пару секунд, а затем печатает 567. Тем не менее, нет печати 567 в моем сценарии выше. Кто-нибудь знает, почему он печатает этот номер? Как остановить его от печати этого номера? Заранее спасибо за любую помощь, которую вы можете мне дать.

./test.py a b 
got here 
got here22222 
~/test$  567 
+2

Я думаю, что это происходит от вызова подпроцесса на 'cat'. Вы катаетесь (в конвейере) файл, а 567, скорее всего, результат этого конвейера – inspectorG4dget

ответ

1

Заключительный этап вашего трубопровода wc -l, который, вероятно, генерируя число 567 , Для достижения этой цели требуется несколько секунд.

+0

Я идиот. Спасибо. Это был wc -l. Я также понял, как назначить вывод переменной. Мне нужно поставить stdout = subprocess.PIPE; например новый python cmd должен быть proc = subprocess.Popen ("cat" + input.name + "| cut -d ',' -f 3 | sort | uniq | wc -l", shell = True, stdout = subprocess.PIPE) – Classified

2

, чтобы остановить это происходит вас может ждать подпроцесс с помощью proc.wait() в противном случае я думаю, выход из водопроводных команд 567

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