@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
Мы получим пустую консоль.

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

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

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

Войти через центр авторизации
Похожие вопросы
ClickNet Санкт-Петербург
от 50 000 до 90 000 ₽
VINTEO Краснодар
от 100 000 ₽
Siberian Wellness Новосибирск
от 90 000 до 120 000 ₽
06 мар. 2021, в 02:23
120000 руб./за проект
06 мар. 2021, в 00:29
500 руб./за проект
05 мар. 2021, в 23:28
1200 руб./за проект