Я занурюю файл у python для будь-яких змін, і він не збирає змін у файлі

Ось моя скрипт:

def tail(file, delay=0.5):
    f = open(file, 'r')
    f.seek(0, 2)
    while True:    
        line = f.readline()
        print 'line: ' + line
        if not line:
            time.sleep(delay)
        else:
            print 'line found!'

Коли я відкриваю файл і додає до нього рядки, цей скрипт не збирає його. Я роблю це на linux.

0
Ваш приклад коду працює для мене. Як ви пишете файл?
додано Автор David Z, джерело
Це дивно ... я зробив те ж саме, і це все одно працює для мене. Я не знаю, що сказати тобі. (Для тестування самого коду Python я хотів би використовувати echo linetexthere >> file замість редактора, як vi)
додано Автор David Z, джерело
пов'язані: python "> stackoverflow.com/questions/182197/ … python подібним до хвоста "> stackoverflow.com/questions/136168/ …
додано Автор jfs, джерело
Я відкриваю його в vi, додавши деякі рядки до нього, а потім написавши його.
додано Автор lee_connell, джерело
Давид, дякую за вхід, проблема полягає у додаванні рядка до файла з vi. Це не спрацювало, однак додавання деякого тексту через відлуння робило роботу. Дякую всім!
додано Автор lee_connell, джерело

2 Відповіді

замість open ('filename', 'r') використовуйте open ('filename', 'a') для додавання рядків у файл ... Я думаю, ви насправді хочете додати до файлу, а не читати його.

1
додано

Код добре виглядає, тому, ймовірно, виникає проблема буферизації. Спробуйте скористатись f.read (100), а не readline, щоб ви прочитали доступні дані, а не шукали кінцеві рядки.

0
додано
Я зробив це і все одно нічого не отримую. Це тому, що файл буферизовано в пам'яті, щоб він не виявив зміни на диску?
додано Автор lee_connell, джерело
ІТ КПІ - Python
ІТ КПІ - Python
625 учасників

Канал обговорень про всякі штуки зі світу пайтону. Прохання: 0. мати повагу одне до одного; 1. не матюкатися в сторону людей; 2. не захламляти тред повідомленнями по одному слову;