все Python 3tarfileпонятие
tarfile.TarInfo
архивы tar
Описание одного члена tar-архива: имя, размер, тип (файл, каталог, ссылка), права, владелец, время.
Синтаксис
info = tarfile.TarInfo(name=''); info.size = len(data)
Через TarInfo с addfile() кладут в архив данные из памяти, но size нужно выставить самому: по умолчанию он 0, и из BytesIO не прочитается ни байта. Имя в TarInfo — это то, что окажется на диске при распаковке, и оно может быть '../x' или '/etc/x': перед распаковкой чужого архива смотрят name, type и linkname — или доверяют это фильтру.
Примеры
import io, tarfile
data = 'привет'.encode('utf-8')
with tarfile.open('mem.tar', 'w') as tar:
empty = tarfile.TarInfo('empty.txt')
tar.addfile(empty, io.BytesIO(data))
full = tarfile.TarInfo('full.txt')
full.size = len(data)
tar.addfile(full, io.BytesIO(data))
with tarfile.open('mem.tar') as tar:
for m in tar.getmembers():
print(m.name, m.size, m.isfile())
# → empty.txt 0 True / full.txt 12 True
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности