Запись в начало gzip файла с python - PullRequest
0 голосов
/ 05 августа 2020

Запись в начало файла txt может быть достигнута следующим образом:

with open('foo.txt', 'wt') as outfn:
    for i in range(10):
        outfn.write('{}\n'.format(i))

with open('foo.txt', 'r+') as fn:
    content = fn.read()
    fn.seek(0, 0)
    fn.write('foo\n{}'.format(content))

Однако, когда я пытаюсь записать в начало файла gzip:

import gzip 

with gzip.open('foo.txt.gz', 'wt') as outfn:
    for i in range(10):
        outfn.write('{}\n'.format(i))

with gzip.open('foo.txt.gz', 'r+') as fn:
    content = fn.read()
    fn.seek(0, 0)
    fn.write('foo\n{}'.format(content))

Выдается следующая ошибка:

OSError: [Errno 9] write() on read-only GzipFile object

Я пробовал несколько альтернатив, но не смог найти достойного способа записать текст в начало файла gzip.

Ответы [ 2 ]

1 голос
/ 05 августа 2020

Я не думаю, что у gzip.open есть опция «+», как у обычного открытого файла. См. Здесь: gzip docs

Что именно вы пытаетесь сделать, записывая в начало файла? Возможно, будет проще открыть файл снова и перезаписать его.

0 голосов
/ 05 августа 2020

Я придумал следующее решение:

import gzip 

content = str()
for i in range(10):
    content += '{}\n'.format(i)

with gzip.open('foo.txt.gz', 'wt') as outfn:
    outfn.write('foo\n{}'.format(content))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...