Можно ли позволить Python постоянно читать из стандартного ввода из другого источника, например из файла? По сути, я пытаюсь разрешить своему сценарию использовать стандартный ввод для эхо-ввода, и я хотел бы использовать файл или внешний источник для взаимодействия с ним (оставаясь при этом открытым).
Примером может быть (input.py):
#!/usr/bin/python
import sys
line = sys.stdin.readline()
while line:
print line,
line = sys.stdin.readline()
Выполняя это напрямую, я могу непрерывно вводить текст, и он возвращается, пока скрипт остается живым. Если вы хотите использовать внешний источник, такой как файл или ввод из bash, скрипт завершает работу сразу после получения ввода:
$ echo "hello" | python input.py
hello
$
В конечном итоге я хотел бы сделать следующее:
$ tail -f file | python input.py
Затем, если обновления файла имеют input.py, отобразите все, что добавлено в файл, оставаясь при этом открытым. Может быть, я подхожу к этому неправильно или я просто невежественен, но есть ли способ сделать это?
tail -f file
будет продолжать выдавать данные, добавленные к файлу. Обновления, добавленные в файл, работают... вы делаете это как-то по-другому? - person tdelaney   schedule 04.02.2016echo "stuff" >> file
проверить это. - person TNW   schedule 04.02.2016O_APPEND
в параметрахopen
. - person TNW   schedule 04.02.2016echo "something else" >> file
работает нормально, но если я использую внешний редактор и сохраняю его, он, похоже, игнорирует его. - person Rory Zipher   schedule 04.02.2016tail -F -f file
. Это снова откроет файл, если он будет переименован. - person Barmar   schedule 04.02.2016