Легко ли читать строку из gz-сжатого текстового файла, используя python без полного извлечения файла? У меня есть файл text.gz, который составляет 200 мб. Когда я извлекаю его, он становится 7.4gb. И это не единственный файл, который я должен прочитать. Для всего процесса я должен прочитать 10 файлов. Хотя это будет последовательная работа, я думаю, что это будет разумная вещь, чтобы не делать этого, не раскрывая всю информацию. Я даже не знаю, что это возможно. Как это можно сделать с помощью python? Мне нужно прочитать текстовый файл по строкам.
Python: чтение строк из сжатых текстовых файлов
Ответ 1
Вы пытались использовать gzip.GzipFile? Аргументы аналогичны open
.
Ответ 2
Вы можете использовать стандартный gzip-модуль в python. Просто используйте:
gzip.open('myfile.gz')
чтобы открыть файл как любой другой файл и прочитать его строки.
Дополнительная информация здесь: Python gzip module
Ответ 3
Использование gzip.GzipFile:
import gzip
with gzip.open('input.gz','r') as f:
for line in f:
print('got line', line)
Примечание 1: для python3 вам необходимо указать файл, который нужно открыть в 'rt'
, поскольку 'r'
по умолчанию используется для двоичного чтения или иначе использовать line.decode(...)
.
Примечание 2: gzip.open(filename, mode)
является псевдонимом для gzip.GzipFile(filename, mode)
.
Я предпочитаю первый, поскольку он похож на with open(...) as f:
, используемый для открытия несжатых файлов.