Objets TarFile¶
L’objet TarFile
fournit une interface à une archive tar. Une archive tar est une séquence de blocs. Un membre d’archive (un fichier stocké) est composé d’un bloc d’en-tête suivi de blocs de données. Il est possible de stocker un fichier dans une archive tar plusieurs fois. Chaque membre d’archive est représenté par un TarInfo
objet, voir TarInfo Objects pour plus de détails.
Un TarFile
objet peut être utilisé comme gestionnaire de contexte dans un with
état. Il sera automatiquement fermé lorsque le bloc sera terminé. Veuillez noter qu’en cas d’exception, une archive ouverte en écriture ne sera pas finalisée ; seul l’objet fichier utilisé en interne sera fermé. Voir la sectionExemples pour un cas d’utilisation.
Nouveauté dans la version 3.2 : ajout de la prise en charge du protocole de gestion de contexte.
classtarfile.
TarFile
(name=None, mode=’r’, fileobj=None, format=DEFAULT_FORMAT, tarinfo=TarInfo, dereference=False, ignore_zeros=False, encoding=ENCODING, errors=’surrogateescape’, pax_headers=None, debug=0, errorlevel=0)
Tous les arguments suivants sont facultatifs et peuvent également être accédés comme attributs d’instance.
Nom est le nom de chemin de l’archive. name peut être un objet de type chemin.Il peut être omis si fileobj est donné.Dans ce cas, l’attribut name
de l’objet fichier est utilisé s’il existe.
Mode est soit 'r'
pour lire à partir d’une archive existante, 'a'
pour ajouter des données à un fichier existant, 'w'
pour créer un nouveau fichier en écrasant un fichier existant, ou 'x'
pour créer un nouveau fichier uniquement s’il n’existe pas déjà.
Si fileobj est donné, il est utilisé pour lire ou écrire des données. S’il peut être déterminé, le mode est remplacé par celui de fileobj. fileobj sera utilisé à partir de la position 0.
Note
fileobj n’est pas fermé, lorsque TarFile
est fermé.
format contrôle le format d’archive pour l’écriture. Il doit être une des constantesUSTAR_FORMAT
GNU_FORMAT
ou PAX_FORMAT
qui sontdéfinies au niveau du module. Lors de la lecture, le format sera automatiquement détecté, même si différents formats sont présents dans une même archive.
L’argument tarinfo peut être utilisé pour remplacer la classe par défaut TarInfo
par une autre.
Si le déréférencement est False
, ajoutez des liens symboliques et matériels vers l’archive. Si c’est True
, ajoutez le contenu des fichiers cibles à l’archive. Cela n’a aucun effet sur les systèmes qui ne prennent pas en charge les liens symboliques.
Si ignore_zeros est False
, traiter un bloc vide comme la fin de l’archive.Si c’est True
, sauter les blocs vides (et invalides) et essayer d’obtenir le plus de membres possible. Ceci n’est utile que pour lire des archives concaténées ou endommagées.
debug peut être défini de 0
(aucun message de débogage) jusqu’à 3
(tous les messages de débogage). Les messages sont écrits dans sys.stderr
.
Si errorlevel est 0
, toutes les erreurs sont ignorées lors de l’utilisation de TarFile.extract()
.Néanmoins, elles apparaissent comme des messages d’erreur dans la sortie de débogage, lorsque le débogage est activé. Si 1
, toutes les erreurs fatales sont soulevées comme OSError
exceptions. Si 2
, toutes les erreurs non fatales sont soulevées comme TarError
exceptions également.
Les arguments encodage et erreurs définissent l’encodage des caractères à utiliser pour la lecture ou l’écriture de l’archive et la façon dont les erreurs de conversion vont être gérées. Les paramètres par défaut fonctionneront pour la plupart des utilisateurs.Voir la section Problèmes d’Unicode pour des informations approfondies.
L’argument pax_headers est un dictionnaire optionnel de chaînes qui seront ajoutées en tant qu’en-tête global pax si le format est PAX_FORMAT
.
Changé dans la version 3.2 : Utilisez 'surrogateescape'
comme valeur par défaut pour l’argument errors.
Changé dans la version 3.5 : Le mode 'x'
(création exclusive) a été ajouté.
Changé dans la version 3.6 : Le paramètre name accepte un objet de type chemin.
classmethodTarFile.
open
(…)¶
Constructeur alternatif. La tarfile.open()
fonction est en fait un raccourci vers cette méthode de classe.
TarFile.
getmember
(nom)¶
Retourne un TarInfo
objet pour le membre nom. Si nom ne peut être trouvé dans l’archive, KeyError
est soulevé.
Note
Si un membre apparaît plus d’une fois dans l’archive, sa dernière occurrence est supposée être la version la plus à jour.
TarFile.
getmembers
()¶
Retourner les membres de l’archive sous la forme d’une liste d’objets TarInfo
. La liste a le même ordre que les membres de l’archive.
TarFile.
getnames
()¶
Retourner les membres sous la forme d’une liste de leurs noms. Elle a le même ordre que la listeretournée par getmembers()
.
TarFile.
list
(verbose=True, *, members=None)¶
Imprime une table des matières à sys.stdout
. Si verbose est False
,seuls les noms des membres sont imprimés. S’il est True
, des sorties similaires à celles de ls -l sont produites. Si l’option members est donnée, elle doit être un sous-ensemble de la liste renvoyée par getmembers()
.
Changé dans la version 3.5 : ajout du paramètre members.
Retourner le membre suivant de l’archive sous forme d’un objet TarInfo
, lorsqueTarFile
est ouvert à la lecture. Retourne None
s’il n’y a plus de disponible.
TarFile.
extractall
(path= ». », members=None, *, numeric_owner=False)¶
Extrait tous les membres de l’archive dans le répertoire de travail actuel ou le chemin d’accès. Si l’option members est donnée, elle doit être un sous-ensemble de la liste retournée par getmembers()
. Les informations du répertoire comme le propriétaire, la date de modification et les permissions sont définies après que tous les membres ont été extraits.Ceci est fait pour contourner deux problèmes : Le temps de modification d’un répertoire est remis à zéro chaque fois qu’un fichier y est créé. Et, si les permissions d’un répertoire ne permettent pas l’écriture, l’extraction de fichiers vers celui-ci échouera.
Si numeric_owner est True
, les numéros uid et gid du fichier tar sont utilisés pour définir le propriétaire/groupe des fichiers extraits. Sinon, les valeurs nommées du fichier tar sont utilisées.
Avertissement
Ne jamais extraire des archives de sources non fiables sans inspection préalable.Il est possible que des fichiers soient créés en dehors du chemin, par ex. membresqui ont des noms de fichiers absolus commençant par "/"
ou des noms de fichiers avec deux points ".."
.
Changé dans la version 3.5 : Ajout du paramètre numeric_owner.
Changé dans la version 3.6 : Le paramètre path accepte un objet de type chemin.
TarFile.
extract
(member, path= » », set_attrs=True, *, numeric_owner=False)¶
Extrait un membre de l’archive dans le répertoire de travail actuel, en utilisant son nom complet. Ses informations de fichier sont extraites aussi précisément que possible. memberpeut être un nom de fichier ou un objet TarInfo
. Vous pouvez spécifier un répertoire différent en utilisant path. path peut être un objet de type chemin.Les attributs de fichier (owner, mtime, mode) sont définis sauf si set_attrs est false.
Si numeric_owner est True
, les numéros uid et gid du fichier tar sont utilisés pour définir le propriétaire/groupe des fichiers extraits. Sinon, les valeurs nommées du fichier tar sont utilisées.
Note
La méthode extract()
ne prend pas en charge plusieurs problèmes d’extraction.Dans la plupart des cas, vous devriez envisager d’utiliser la méthode extractall()
.
Avertissement
Voir l’avertissement pour extractall()
.
Changé dans la version 3.2 : ajout du paramètre set_attrs.
Changé dans la version 3.5 : ajout du paramètre numeric_owner.
Changé dans la version 3.6 : Le paramètre path accepte un objet de type chemin.
TarFile.
extractfile
(membre)¶
Extraire un membre de l’archive en tant qu’objet de fichier. membre peut êtreun nom de fichier ou un TarInfo
objet. Si member est un fichier ordinaire ou un lien, un objet io.BufferedReader
est renvoyé. Pour tous les autres membres existants, None
est renvoyé. Si le membre n’apparaît pas dans l’archive, KeyError
est soulevé.
Changé dans la version 3.3 : Retourne un io.BufferedReader
objet.
TarFile.
add
(name, arcname=None, recursive=True, *, filter=None)¶
Ajouter le nom du fichier à l’archive. name peut être n’importe quel type de fichier(répertoire, fifo, lien symbolique, etc.). S’il est donné, arcname spécifie un nom alternatif pour le fichier dans l’archive. Les répertoires sont ajoutés de manière récursive par défaut. Ceci peut être évité en définissant recursive àFalse
. La récursivité ajoute les entrées dans l’ordre trié.Si le filtre est donné, il doit être une fonction qui prend un argument TarInfo
objet et renvoie l’objet TarInfo
modifié. Si elle renvoie au contraireNone
l’objet TarInfo
sera exclu de l’archive. Voir Exemples pour un exemple.
Changé dans la version 3.2 : Ajout du paramètre filter.
Changé dans la version 3.7 : La récursion ajoute les entrées dans l’ordre trié.
TarFile.
addfile
(tarinfo, fileobj=None)¶
Ajouter l’objet TarInfo
tarinfo à l’archive. Si fileobj est donné,il doit être un fichier binaire, ettarinfo.size
des octets sont lus à partir de celui-ci et ajoutés à l’archive. Vous pouvez créer des objets TarInfo
directement, ou en utilisant gettarinfo()
.
TarFile.
gettarinfo
(name=None, arcname=None, fileobj=None)¶
Créer un objet TarInfo
à partir du résultat de os.stat()
ou équivalent sur un fichier existant. Le fichier est soit nommé par son nom, soit spécifié comme un objet fichier fileobj avec un descripteur de fichier.name peut être un objet de type chemin. S’il est donné, arcname spécifie un nom alternatif pour le fichier dans l’archive, sinon, le nom est pris de l’attribut fileobj’sname
, ou de l’argument name. Le nom doit être une chaîne de texte.
Vous pouvez modifier certains attributs de TarInfo
avant de l’ajouter en utilisant addfile()
.Si l’objet fichier n’est pas un objet fichier ordinaire positionné au début du fichier, des attributs tels que size
peuvent nécessiter une modification. C’est le cas pour des objets tels que GzipFile
.Le name
peut également être modifié, auquel cas arcnamecourrait être une chaîne fictive.
Changé dans la version 3.6 : Le paramètre name accepte un objet de type chemin.
TarFile.
close
.