2014-11-25 2 views
0

Я не эксперт в Bash и Python, поэтому этот вопрос может показаться глупым.Python stdout logging: terminal vs bash file

У меня есть сценарий Python под названием learn.py, и я заметил два разных поведения стандартного вывода при перенаправлении в файл журнала.

Если я вызываю это из терминала, я вижу, что размер файла журнала растет во время работы скрипта.

$ ./learn.py > file.log 

Однако, если я создаю файл Баш для той же цели:

#!/bin/bash 
./learn.py > file.log 

запускает скрипт (я проверил с pgrep), но это, кажется, не работать, так как файл журнала остается пустым , Я что-то упускаю?

+0

Не могли бы вы опубликовать то, что ваш ' script.py' скрипт? – Balthamos

+0

, даже если все, что вы ввели в 'learn.py', это' print 'Hello? "' ... –

+0

@Balthamos 'learn.py' - сложный скрипт, который использует библиотеки NLTK. @JoranBeasley Он работает, ставя только «привет». Возможно ли, что файл будет заполнен только в конце вычисления? – mommi84

ответ

0

Я решил с помощью Logging facility for Python, вставив

import logging 
logging.basicConfig(filename='file.log',level=logging.INFO) 

и заменяя каждое вхождение print "..." с

logging.info("...") 

Окончательный Bash сценария:

#!/bin/bash 
./learn.py 
+1

Также см. Https://docs.python.org/3/library/syslog.html. – SMUsamaShah