python: чтение строк из сжатых текстовых файлов

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

Ответы на вопрос(3)

С помощью 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: используется для открытия несжатых файлов.

 dmeu01 апр. 2016 г., 11:37
или использоватьline.decode()
 kap10 авг. 2015 г., 13:42
Для python3 вы должны указать файл, который будет открыт в «rt», так как «r» по умолчанию используется для двоичного чтения.
Решение Вопроса

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

зуйте:

gzip.open('myfile.gz')

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

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

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

Ваш ответ на вопрос