#python-3.x
#python-3.x
Вопрос:
Я хочу передавать данные через stdin в скрипт Python для дальнейшей обработки. Команда:
tail -f /home/pi/ALL.TXT | python3 ./logcheck.py
И код Python является:
import sys
while 1:
if (sys.stdin.isatty()):
for line in sys.stdin:
print(line)
Я хочу, чтобы код непрерывно просматривал stdin
, а затем обрабатывал каждую строку при получении. tail
Команда работает при самостоятельном запуске, но скрипт python никогда ничего не выводит.
Проверка, isatty()
кажется, что оно всегда возвращает False
?
Помогите!
Комментарии:
1. Потому что stdin не является tty, когда вы загружаете в него данные. Почему вы ожидаете, что это вернет true?
2. В других руководствах предлагалось, что isatty имеет значение true при передаче по каналу, false в противном случае. Как еще я могу проверить?
Ответ №1:
TTY — это когда вы используете свой обычный терминал — например, открываете python в своей оболочке и вводите
BASH>python
>>>from sys import stdin
>>>stdin.isatty() #True
В вашем случае стандартный ввод поступает из чего-то, что не является tty
. Просто добавьте not
в if
инструкцию.