@pcdesign

Как грепать в консоле вывод от python?

Вот например скрипт
import logging
from time import sleep
   
while True: 
    print('Hello') 
    logging.warning('I told you so')  
    logging.warning('Watch out!')     
    sleep(1)

python main.py 2>&1 | grep Watch

И все работает.
600d281b9569e036938492.png

Но такой номер с print уже не проходит.
python main.py 2>&1 | grep Hello
Мы получим пустую консоль.

Есть вариант как-то фильтровать принты?
  • Вопрос задан
  • 151 просмотр
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Питон по умолчанию буферизует вывод - не выводит в stdout сразу.
Если подождешь подольше, то grep потом выведет сразу пачку Hello, когда буфер наполнится и будет выведен в stdout целиком.

Можно сделать это в нужный тебе момент, вызвав sys.stdout.flush().
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы