import tarfile info = tarfile.TarInfo(name="")
name=''
- Класс TarInfo()
модуля tarfile
создает объект TarInfo
. Объекты TarInfo
возвращаются методами TarFile.getmember()
, TarFile.getmembers()
и TarFile.gettarinfo()
.
Объект TarInfo
представляет одного члена в объекте экземпляра класса tarfile.TarFile
. Помимо хранения всех необходимых атрибутов файла, таких как тип файла, размер, время, разрешения, владелец и т. д., он предоставляет некоторые полезные методы для определения его типа. Он не содержит сами данные файла.
tarfile.TarInfo
.TarInfo
из строки буфера tarfile.TarInfo.frombuf()
,tarfile.TarInfo.fromtarfile()
.tarfile.TarInfo.frombuf(buf, encoding, errors)
:Метод класса tarfile.TarInfo.frombuf()
создает и возвращает объект TarInfo
из строки буфера buf
.
Вызывает исключение HeaderError
, если буфер недействителен.
tarfile.TarInfo.fromtarfile(tarfile)
:Метод класса tarfile.TarInfo.fromtarfile()
читает следующий элемент из объекта TarFile
и возвращает его как объект TarInfo
.
TarInfo
.TarInfo
:TarInfo
TarInfo.tobuf()
.TarInfo
:TarInfo.name
,TarInfo.size
,TarInfo.mtime
,TarInfo.mode
,TarInfo.type
,TarInfo.linkname
,TarInfo.uid
,TarInfo.gid
,TarInfo.uname
,TarInfo.gname
,pax
TarInfo.pax_headers
,TarInfo
с измененными заданными атрибутами TarInfo.replace()
(новое в Python 3.12).TarInfo
:True
если файл TarInfo.isfile()
,True
если файл TarInfo.isreg()
,True
если каталог TarInfo.isdir()
,True
, если символическая ссылка TarInfo.issym()
,True
, если жесткая ссылка TarInfo.islnk()
,True
, если символьное устройство TarInfo.ischr()
,True
, если блочное устройство TarInfo.isblk()
,True
, если FIFO TarInfo.isfifo()
,True
, если одно из символьного устройства, блочного TarInfo.isdev()
.TarInfo
.TarInfo.tobuf(format=DEFAULT_FORMAT, encoding=ENCODING, errors='surrogateescape')
:Метод TarInfo.tobuf()
создает строковый буфер из объекта TarInfo
. Для получения информации об аргументах метода смотрите конструктор класса TarFile
.
TarInfo
.TarInfo.name
:Атрибут TarInfo.name
- имя элемента архива.
TarInfo.size
:Атрибут TarInfo.size
- размер в байтах.
TarInfo.mtime
:Атрибут TarInfo.mtime
- время последнего изменения в секундах с начала эпохи, как в os.stat_result.st_mtime
.
Изменено в версии 3.12: Может быть установлено значение
None
дляTarInfo.extract()
иTarInfo.extractall()
, что приводит к пропуску применения этого атрибута при извлечении.
TarInfo.mode
:Атрибут TarInfo.mode
биты разрешения как в os.chmod()
.
Изменено в версии 3.12: Может быть установлено значение
None
дляTarInfo.extract()
иTarInfo.extractall()
, что приводит к пропуску применения этого атрибута при извлечении.
TarInfo.type
:Атрибут TarInfo.type
тип файла. Тип обычно является одной из следующих констант:
REGTYPE
,AREGTYPE
,LNKTYPE
,SYMTYPE
,DIRTYPE
,FIFOTYPE
,CONTTYPE
,CHRTYPE
,BLKTYPE
,GNUTYPE_SPARSE
. Для более удобного определения типа объекта TarInfo
используйте методы is*()
ниже.
TarInfo.linkname
:Атрибут TarInfo.linkname
- имя целевого файла, которое присутствует только в объектах TarInfo
типа LNKTYPE
и SYMTYPE
.
TarInfo.uid
:Атрибут TarInfo.uid
- идентификатор пользователя, который изначально сохранил этот элемент архива.
Изменено в версии 3.12: Может быть установлено значение
None
дляTarInfo.extract()
иTarInfo.extractall()
, что приводит к пропуску применения этого атрибута при извлечении.
TarInfo.gid
:Атрибут TarInfo.gid
- идентификатор группы пользователя, который изначально сохранил этот элемент архива.
Изменено в версии 3.12: Может быть установлено значение
None
дляTarInfo.extract()
иTarInfo.extractall()
, что приводит к пропуску применения этого атрибута при извлечении.
TarInfo.uname
:Атрибут TarInfo.uname
- имя пользователя, который изначально сохранил этот элемент архива.
Изменено в версии 3.12: Может быть установлено значение
None
дляTarInfo.extract()
иTarInfo.extractall()
, что приводит к пропуску применения этого атрибута при извлечении.
TarInfo.gname
:Атрибут TarInfo.gname
- имя группы, под которым изначально сохранили этот элемент архива.
Изменено в версии 3.12: Может быть установлено значение
None
дляTarInfo.extract()
иTarInfo.extractall()
, что приводит к пропуску применения этого атрибута при извлечении.
TarInfo.pax_headers
:Атрибут TarInfo.pax_headers
- словарь, содержащий пары ключ-значение связанного расширенного заголовка pax.
TarInfo.replace(name=..., mtime=..., mode=..., linkname=..., uid=..., gid=..., uname=..., gname=..., deep=True)
:Новое в версии 3.12.
Метод TarInfo.replace()
возвращает новую копию объекта TarInfo
с измененными заданными атрибутами. Например, чтобы вернуть TarInfo
с именем группы, установленным на staff
, используйте:
new_tarinfo = old_tarinfo.replace(gname='staff')
По умолчанию создается глубокая копия. Если deep
имеет значение False
, то копия является мелкой, т. е. TarInfo.pax_headers
и любые пользовательские атрибуты используются совместно с исходным объектом TarInfo
.
TarInfo
.TarInfo.isfile()
:Метод TarInfo.isfile()
возвращает True
, если объект Tarinfo
является обычным файлом.
TarInfo.isreg()
:Метод TarInfo.isreg()
то же, что и TarInfo.isfile()
.
TarInfo.isdir()
:Метод TarInfo.isdir()
возвращает True
, если это каталог.
TarInfo.issym()
:Метод TarInfo.issym()
возвращает True
, если это символическая ссылка.
TarInfo.islnk()
:Метод TarInfo.islnk()
возвращает True
, если это жесткая ссылка.
TarInfo.ischr()
:Метод TarInfo.ischr()
возвращает True
, если это символьное устройство.
TarInfo.isblk()
:Метод TarInfo.isblk()
возвращает True
, если это блочное устройство.
TarInfo.isfifo()
:Метод TarInfo.isfifo()
возвращает True
, если это FIFO.
TarInfo.isdev()
:Метод TarInfo.isdev()
возвращает True
, если это одно из символьного устройства, блочного устройства или FIFO.
import tarfile # сначала создадим архив path = 'script/sql-script/' with tarfile.TarFile.open('sample.tar.gz', 'w:gz') as tar: tar.add(path) list_attr = ['name', 'size', 'mtime', 'mode', 'type', 'linkname', 'uid', 'gid', 'uname', 'gname'] with tarfile.TarFile.open('sample.tar.gz') as tar: # второй элемент архива info = tar.getmembers()[1] for attr in list_attr: # выведем все атрибуты x = getattr(info, attr, None) print(attr, '=', x) print('isfile =>', info.isfile()) print('isdir =>', info.isdir()) # name = script/sql-script/Script-5.sql # size = 2687 # mtime = 1568437638 # mode = 436 # type = b'0' # linkname = # uid = 1000 # gid = 1000 # uname = docs-python # gname = docs-python # isfile => True # isdir => False
Теперь изменим некоторые атрибуты при создании архива. Сбросим информацию о пользователе, используя аргумент фильтра в методе TarFile.add()
.
import tarfile def reset(tarinfo): "Сбрасывает информацию о пользователе" tarinfo.uid = tarinfo.gid = 0 tarinfo.uname = tarinfo.gname = "root" return tarinfo path = 'script/sql-script/' with tarfile.open("sample.tar.gz", "w:gz") as tar: tar.add(path, filter=reset) with tarfile.TarFile.open('sample.tar.gz') as tar: print(tar.list()) # ?rwxrwxr-x root/root 0 2020-05-18 14:33:18 script/sql-script/ # ?rw-rw-r-- root/root 2687 2019-09-14 08:07:18 script/sql-script/Script-5.sql # ?rw-rw-r-- root/root 1371 2019-09-14 08:06:38 script/sql-script/Script-1.sql # ?rw-rw-r-- root/root 50 2019-09-14 08:00:46 script/sql-script/Script-3.sql # ?rw-rw-r-- root/root 3394 2019-09-14 08:07:34 script/sql-script/procedure.sql # ?rw-rw-r-- root/root 1130 2019-09-14 08:06:30 script/sql-script/Script-2.sql # ?rw-rw-r-- root/root 1163 2019-09-14 08:06:31 script/sql-script/Script-4.sql # None