Как перезагрузить файл в Python? - PullRequest
2 голосов
/ 14 июля 2010

Если у меня есть скрипт, который записывает 1000 строк в файл, а затем продолжает регулярные выражения для этого файла, однако будут доступны только последние 100 строк написанного текста.Одним из способов решения этой проблемы является закрытие и повторное открытие файла.Есть ли способ перезагрузить файл после записи в него или я должен просто сделать открытый для записи модуль?Возможно, уместно, что файл журнала не существует / пуст при первом открытии.

>>> the_page = 'some large site opened through urllib'
>>> logfile = open('./artist/' + tags['ARTIST'], 'r+') 
>>> logfile.write(the_page)
>>> print logfile.read()

Ничего не появляется.

>>> 'Some regular expressions search'

Поиск по последним 100 записанным строкам.1008 *

Все появляется.

>>> 'Some regular expressions search'

Работает как положено.

Ответы [ 3 ]

6 голосов
/ 14 июля 2010

Это всего лишь догадка, но, возможно, logfile.seek(0) после того, как запись закончена, может помочь.Возможное объяснение приведено в документации file.next:

Однако использование seek() для изменения положения файла в абсолютной позиции приведет к очистке буфера упреждающего чтения.

0 голосов
/ 14 июля 2010

Как отмечают комментарии, это неправильный путь. поиск (0) - правильный путь.

Это был довольно очевидный ответ, мне не нужно закрывать файл или что-то еще, я могу просто открыть его снова, и он действует так же, как перезагрузка. Итак:

>>> the_page = 'some large site opened through urllib'
>>> logfile = open('./artist/' + tags['ARTIST'], 'r+') 
>>> logfile.write(the_page)
>>> logfile = open('./artist/' + tags['ARTIST'], 'r+') 
>>> print logfile.read()
0 голосов
/ 14 июля 2010
logfile.flush()

Это должно сделать то же самое, что открыть, а затем закрыть файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...