Согласно David Beazley's talk on generators, следующий код должен повторить команду UNIX tail -f
:Репликация «хвост -f» с Python
import time
def follow(thefile):
thefile.seek(0,2)
while True:
line = thefile.readline()
if not line:
time.sleep(0.1)
continue
yield line
f = open('followed.txt')
lines = follow(f)
for i in lines:
print i
Если я запускаю это в раковине, он делает «что-то», и это действительно блокирует но и не распечатывает содержимое файла follow.txt. Почему так?
** Уточнение **: с запущенным кодом я открываю файл follow.txt с Vim, добавляю строку произвольного текста и сохраняю его. Все еще ничего не печатается. – Pyderman
Ваш метод работает для меня. –
Как вы добавляете 'follow.txt'? Приведенный выше код может не работать, если вы добавляете текст в файл 'follow.txt' с помощью текстового редактора, поскольку текстовый редактор не может быть добавлен к исходному файлу - возможно, он создает новый файл и затем переименовывает' follow.txt 'to it ... – unutbu