Я сделал скрипт на Python, который взаимодействует с веб-сервером, используя бесконечный цикл. Я хочу записывать все данные связи в файл, а также одновременно отслеживать их с терминала. поэтому я использовал команду tee вот так.
python client.py | tee logfile
однако я ничего не получил ни из терминала, ни из файла журнала. скрипт python работает нормально. что здесь происходит? я что-то упускаю?
некоторые советы будут оценены. заранее спасибо.
sys.stdout.flush()
из вашего скрипта всякий раз, когда вы регистрируете строку.Ответы:
Откуда
man python
:Итак, что вы можете сделать:
Или используя
tee
:источник
script
, которое также отключает буферизацию и дополнительно заставляетC-a
работать управляющие последовательности ( клавиши курсора и т. Д.): Stackoverflow.com/a/39269661/15690 .tee
воспринимается как пайп (а это так), а не как гибрид: он пишет в консоль. Примечание: поведение можно также контролировать внутри программы на Python.python -u client.py | tee >> logfile
не сработает. Появится>>
еще один случай буферизованной записи в файл. Вот чтоtee -a
решает.