Я хочу добавить файл в файл tar. Например, файлы в test.tar.gz
— это a.png, b.png, c.png
. У меня есть новый png-файл с именем a.png
, я хочу добавить к a.png
до test.tar.gz
и покрыть старый файл a.png
в test.tar.gz
. Мой код:
import tarfile
a = tarfile.open('test.tar.gz', 'w:gz')
a.add('a.png')
a.close()
затем все файлы в test.tar.gz
исчезли, но a.png
, если я изменю свой код на это:
import tarfile
a = tarfile.open('test.tar.gz', 'a:')# or a:gz
a.add('a.png')
a.close()
программа вылетает, журнал ошибок:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/tarfile.py", line 1678, in open
return func(name, filemode, fileobj, **kwargs)
File "/usr/lib/python2.7/tarfile.py", line 1705, in taropen
return cls(name, mode, fileobj, **kwargs)
File "/usr/lib/python2.7/tarfile.py", line 1588, in __init__
raise ReadError(str(e))
tarfile.ReadError: invalid header
В чем мои ошибки и что мне делать?
Обновить. Из документации следует, что файлы gz
нельзя открывать в режиме a
. Если да, то как лучше всего добавить или обновить файлы в существующем архиве?