Вопрос по decompression, large-files, python – python: чтение строк из сжатых текстовых файлов

47

Легко ли прочитать строку из gz-сжатого текстового файла, используя python, без полного извлечения файла? У меня есть файл text.gz, который составляет около 200 МБ. Когда я его извлекаю, он становится 7.4gb. И это не единственный файл, который я должен прочитать. Для общего процесса я должен прочитать 10 файлов. Хотя это будет последовательная работа, я думаю, что будет разумно сделать это, не извлекая всю информацию. Я даже не знаю, что это возможно. Как это можно сделать с помощью Python? Мне нужно читать текстовый файл построчно.

Ваш Ответ

3   ответа
44

С помощью Gzip.GzipFile:

import gzip

with gzip.open('input.gz','rt') as f:
    for line in f:
        print('got line', line)

Заметка:gzip.open(filename, mode) это псевдонимgzip.GzipFile(filename, mode). Я предпочитаю первое, так как оно выглядит какwith open(...) as f: используется для открытия несжатых файлов.

или использоватьline.decode() dmeu
Для python3 вы должны указать файл, который будет открыт в «rt», так как «r» по умолчанию используется для двоичного чтения. kap
14

Gzip.GzipFile? Аргументы похожи наopen.

42

зуйте:

gzip.open('myfile.gz')

открыть файл как любой другой файл и прочитать его строки.

Больше информации здесь:Python gzip module

@ Sachin_ruk это не загружает файл, он просто открывает его. Чтобы действительно загрузить данные из файла, вам нужно выполнить `` `f.readline ()` `для чтения строки за раз. Илиf.readlines(N) гдеN - это количество строк, которые вы хотите прочитать. Tom
из любопытства это загружает весь файл в память? Или он достаточно умен, чтобы загружать строки по мере необходимости? sachinruk

Похожие вопросы