Я хочу добавить файл в файл 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
режима. Если да, то каким образом можно добавлять или обновлять файлы в существующем архиве?