2016-10-23 16 views
0

У меня есть GZ файл 500MB, и я разделить его следующим образомInvalid GZ файл после разделения

split -b 100m "file.gz" "file1.gz.part-" 

после расщепления следующие файлы получаются

file1.gz.part-aa 
file1.gz.part-ab 
file1.gz.part-ac 
file1.gz.part-ad 
file1.gz.part-ae 

Я пытаюсь перебирать объекты в GZip файл с помощью GZIP следующим

with gzip.open(filename) as f: 
     for line in f: 

Это работает для file1.gz.part-aa, но для остальные 4 части я получаю

Не со сжатыми ошибками файла

+0

Только для ТЕСТИРОВАНИЯ, присоедините (с 'cat') файлы к одному и посмотрите, можете ли вы разархивировать их из командной строки. Если это работает, то они не повреждены, и это ошибка реализации. В противном случае есть коррупция по какой-то необъяснимой причине. – pid

+0

Взгляните на мой ответ, я отредактировал его прямо сейчас. – pid

+0

Вы можете объединить их в подпроцесс (shell) и прочитать его вывод из канала. – wildplasser

ответ

1

GZIP файл имеет заголовок, который идентифицирует его как файл GZIP. После разделения только первый файл будет иметь этот заголовок. Обращайтесь к файлам перед обработкой.

+0

Мне нужно обрабатывать их по отдельности. Есть ли способ скопировать заголовок в каждый файл? – MysticForce

+0

Даже если вы это сделали, вы все равно сломали сжатие где-то в середине потока. Вы не будете довольны результатами. –

+0

В таком случае мы можем как-то разделить файлы на основе не строк, а не размера и скопировать заголовок в каждый файл? – MysticForce

1

Вы можете split перед вами gzip:

split -l 300000 "file.txt" "tweets1.part-" 
    ^every 300000 lines 

Обратите внимание, что вход split является НЕ*.gz файл, но оригинальная линия-ориентированный файл.

Тогда gzip каждую часть отдельно:

gzip tweets1.part-* 

Это также приведет к удалению части (есть gzip вариант, чтобы держать их).

В python теперь вы можете потреблять каждую деталь отдельно.

+0

Во-первых, у меня есть файл.gz .. Я хочу перебирать объекты только в разделенных файлах. – MysticForce

+0

Я отредактировал свой ответ. – pid

+0

small catch .. после этого как-то я не могу перебирать объект json, который является основным элементом моего файла. – MysticForce

 Смежные вопросы

  • Нет связанных вопросов^_^