Python: предел размера файла кеш-памяти? - PullRequest
0 голосов
/ 18 июня 2020

У меня довольно большой файл .txt. Каждая запись находится на новой строке. Я пытаюсь получить доступ к файлу и перебираю каждую строку, чтобы получить запись. Однако, когда я использую linecache.getline('file_path', 1), я получаю пустую строку. Что из Python docs , вот как linecache возвращает ошибки. Есть ли ограничение на размер файла? Я пытаюсь прочитать файл размером 1,2 ГБ. Я также совершенно уверен, что linecache все еще пытается прочитать весь файл в памяти, прежде чем получить номер строки. Использование ОЗУ увеличивается примерно до размера файла, а затем возвращается в норму. Что-то я делаю не так с linecache? Есть предложения, кроме linecache?

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Все, что вам нужно сделать, это использовать файловый объект в качестве итератора.

for line in open("log.txt"):
    do_something_with(line)

Еще лучше использовать диспетчер контекста в Python версиях.

with open("log.txt") as fileobject:
    for line in fileobject:
        do_something_with(line)

Это автоматически также закройте файл.

0 голосов
/ 18 июня 2020

Если вы просто хотите читать файл построчно, не загружая его в память, python open поставляется с собственным генератором именно для этого.

with open("filename", "r") as file:
    for line in file:
        # Do stuff

Пока вы делайте то, что должны делать внутри этого for l oop, вам не нужно беспокоиться о памяти.

Дополнительная информация в официальных документах

...