Повторно открыть файлы в Python? - PullRequest
34 голосов
/ 21 января 2010

Скажите, у меня есть простой скрипт на python:

file = open('C:\\some_text.txt')
print file.readlines()
print file.readlines()

При запуске первая печать печатает список, содержащий текст файла, а вторая печать печатает пустой список. Не совсем неожиданно, я думаю. Но есть ли способ «свернуть» файл, чтобы я мог прочитать его снова? Или это самый быстрый способ просто открыть его снова?

Ответы [ 3 ]

70 голосов
/ 21 января 2010

Вы можете сбросить указатель файла, вызвав seek():

file.seek(0)

сделает это. Вам нужна эта строка после вашей первой readlines(). Обратите внимание, что file должен поддерживать произвольный доступ для работы вышеупомянутого.

3 голосов
/ 21 января 2010

Помните, что вы всегда можете использовать оператор with для открытия и закрытия файлов:

from __future__ import with_statement

with open('C:\\some_text.txt') as file:
    data = file.readlines()
#File is now closed
for line in data:
    print line
3 голосов
/ 21 января 2010

Для небольших файлов, вероятно, гораздо быстрее просто сохранить содержимое файла в памяти

file = open('C:\\some_text.txt')
fileContents = file.readlines()
print fileContents
print fileContents # This line will work as well.

Конечно, если это большой файл, это может создать нагрузку на вашу оперативную память.

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