tarfile – Leer y escribir archivos tar¶

Objetos tarFile¶

El objeto TarFile proporciona una interfaz para un archivo tar. Un archivo tar es una secuencia de bloques. Un miembro del archivo (un archivo almacenado) se compone de un bloque de cabecera seguido de bloques de datos. Es posible almacenar un fichero en un archivo tar varias veces. Cada miembro del archivo está representado por un TarInfoobjeto, ver Objetos TarInfo para más detalles.

TarFileobjeto puede ser utilizado como un gestor de contexto en una withdeclaración. Se cerrará automáticamente cuando se complete el bloque. Tenga en cuenta que en el caso de una excepción, un archivo abierto para escribir no será finalizado; sólo se cerrará el objeto archivo utilizado internamente. Véase la secciónEjemplos para un caso de uso.

Nuevo en la versión 3.2: Se ha añadido soporte para el protocolo de gestión de contexto.

class tarfile.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)¶

Todos los argumentos siguientes son opcionales y también se puede acceder a ellos como atributos de instancia.

name es el nombre de la ruta del archivo. name puede ser un objeto tipo ruta.Se puede omitir si se da fileobj.En este caso, se utiliza el atributo name del objeto archivo si existe.

El modo es 'r' para leer de un archivo existente, 'a' para añadir datos a un archivo existente, 'w' para crear un nuevo archivo sobreescribiendo uno existente, o 'x' para crear un nuevo archivo sólo si no existe ya.

Si se da fileobj, se utiliza para leer o escribir datos. Si puede bedeterminado, el modo es anulado por el modo de fileobj. fileobj se utilizará desde la posición 0.

Nota

fileobj no se cierra, cuando TarFile se cierra.

formato controla el formato del archivo para la escritura. Debe ser una de las constantesUSTAR_FORMATGNU_FORMAT o PAX_FORMAT que se definen a nivel de módulo. Al leer, el formato se detectará automáticamente, incluso si hay diferentes formatos en un mismo archivo.

El argumento tarinfo se puede utilizar para sustituir la clase por defecto TarInfo por otra.

Si dereference es False, añade enlaces simbólicos y duros al archivo. Si es True, añada el contenido de los archivos de destino al archivo. Esto no tiene efecto en los sistemas que no admiten enlaces simbólicos.

Si ignore_zeros es False, trata un bloque vacío como el final del archivo.Si es True, omite los bloques vacíos (e inválidos) e intenta obtener el mayor número de miembros posible. Esto sólo es útil para leer archivos concatenados o dañados.

La depuración puede establecerse desde 0 (sin mensajes de depuración) hasta 3 (todos los mensajes de depuración). Los mensajes se escriben en sys.stderr.

Si errorlevel es 0, todos los errores se ignoran cuando se utiliza TarFile.extract().No obstante, aparecen como mensajes de error en la salida de depuración, cuando ésta está activada. Si 1, todos los errores fatales se plantean como OSErrorexcepciones. Si 2, todos los errores no fatales se plantean como TarErrorexcepciones también.

Los argumentos de codificación y errores definen la codificación de caracteres que se utilizará para leer o escribir el archivo y cómo se manejarán los errores de conversión. La configuración por defecto funcionará para la mayoría de los usuarios.Consulte la sección Cuestiones de Unicode para obtener información detallada.

El argumento pax_headers es un diccionario opcional de cadenas que se añadirán como una cabecera global pax si el formato es PAX_FORMAT.

Cambiado en la versión 3.2: Utiliza 'surrogateescape' por defecto para el argumento errores.

Cambiado en la versión 3.5: Se ha añadido el modo 'x' (creación exclusiva).

Cambiado en la versión 3.6: El parámetro nombre acepta un objeto tipo ruta.

TarFile.open(…)¶

Constructor alternativo. La función tarfile.open() es en realidad un atajo a este método de clase.

TarFile.getmember(nombre)¶

Devuelve un objeto TarInfo para el miembro nombre. Si el nombre no se encuentra en el archivo, KeyError se genera.

Nota

Si un miembro aparece más de una vez en el archivo, se asume que su última aparición es la versión más actualizada.

TarFile.getmembers()

Devuelve los miembros del archivo como una lista de objetos TarInfo. La lista tiene el mismo orden que los miembros del archivo.

TarFile.getnames()

Devuelve los miembros como una lista con sus nombres. Tiene el mismo orden que la lista devuelta por getmembers().

TarFile.list(verbose=True, *, members=None)¶

Imprime una tabla de contenidos a sys.stdout. Si verbose es False, sólo se imprimen los nombres de los miembros. Si es True, se produce una salida similar a la de ls -l. Si se da miembros opcionales, debe ser un subconjunto de la lista devuelta por getmembers().

Cambiado en la versión 3.5: Se ha añadido el parámetro miembros.

Devuelve el siguiente miembro del archivo como un objeto TarInfo, cuandoTarFile se abre para su lectura. Devuelve None si no hay másdisponible.

TarFile.extractall(path=».», members=None, *, numeric_owner=False)¶

Extrae todos los miembros del archivo al directorio de trabajo actual ordirectory path. Si se da members opcional, debe ser un subconjunto de la lista devuelta por getmembers(). La información del directorio, como el propietario, la hora de modificación y los permisos, se establece después de que se hayan extraído todos los miembros: El tiempo de modificación de un directorio se restablece cada vez que se crea un archivo en él. Y, si los permisos de un directorio no permiten la escritura, la extracción de archivos en él fallará.

Si numeric_owner es True, los números uid y gid del archivo tar se utilizan para establecer el propietario/grupo de los archivos extraídos. De lo contrario, se utilizan los valores con nombre del archivo tar.

Advertencia

No extraiga nunca archivos de fuentes no fiables sin una inspección previa.Es posible que se creen archivos fuera de la ruta, por ejemplo miembrosque tengan nombres de archivo absolutos que empiecen por "/" o nombres de archivo con dos puntos "..".

Cambiado en la versión 3.5: Se ha añadido el parámetro numeric_owner.

Cambiado en la versión 3.6: El parámetro path acepta un objeto tipo path.

TarFile.extract(member, path=»», set_attrs=True, *, numeric_owner=False)¶

Extrae un miembro del archivo al directorio de trabajo actual, utilizando su nombre completo. Su información de archivo se extrae con la mayor precisión posible. memberpuede ser un nombre de archivo o un objeto TarInfo. Puede especificar un directorio diferente utilizando path. path puede ser un objeto similar a path.Los atributos del archivo (owner, mtime, mode) se establecen a menos que set_attrs sea false.

Si numeric_owner es True, los números uid y gid del archivo tar se utilizan para establecer el propietario/grupo de los archivos extraídos. De lo contrario, se utilizan los valores con nombre del archivo tar.

Nota

El método extract() no se ocupa de varios problemas de extracción.En la mayoría de los casos debería considerar el uso del método extractall().

Advertencia

Ver la advertencia para extractall().

Cambiado en la versión 3.2: Se ha añadido el parámetro set_attrs.

Cambiado en la versión 3.5: Se ha añadido el parámetro numeric_owner.

Cambiado en la versión 3.6: El parámetro path acepta un objeto de tipo path.

TarFile.extractfile(member)¶

Extrae un member del archivo como un objeto de archivo. member puede serun nombre de archivo o un objeto TarInfo. Si el miembro es un archivo normal o un enlace, se devuelve un objeto io.BufferedReader. Para todos los demás miembros existentes, se devuelve None. Si el miembro no aparece en el archivo, se devuelve KeyError.

Cambiado en la versión 3.3: Devuelve un objeto io.BufferedReader.

TarFile.add(name, arcname=None, recursive=True, *, filter=None)¶

Agrega el nombre del fichero al archivo. name puede ser cualquier tipo de fichero(directorio, fifo, enlace simbólico, etc.). Si se da, arcname especifica un nombre alternativo para el fichero en el archivo. Los directorios se añaden recursivamente por defecto. Esto puede evitarse estableciendo recursivo aFalse. La recursividad añade las entradas en orden.Si se da el filtro, debe ser una función que toma un argumento de objeto TarInfo y devuelve el objeto TarInfo modificado. Si en cambio devuelveNone el objeto TarInfo será excluido delarchivo. Ver Ejemplos para un ejemplo.

Cambiado en la versión 3.2: Se ha añadido el parámetro filtro.

Cambiado en la versión 3.7: La recursión añade las entradas en orden.

TarFile.addfile(tarinfo, fileobj=None)¶

Añadir el TarInfo objeto tarinfo al archivo. Si se da fileobj, debe ser un archivo binario, ytarinfo.size se leen bytes de él y se añaden al archivo. Puedes crear objetos TarInfo directamente, o usando gettarinfo().

TarFile.gettarinfo(name=None, arcname=None, fileobj=None)¶

Crea un objeto TarInfo a partir del resultado de os.stat() o equivalente en un archivo existente. El archivo se nombra por su nombre, o se especifica como un objeto de archivo fileobj con un descriptor de archivo.El nombre puede ser un objeto tipo ruta. Si se le da, arcname especifica un nombre alternativo para el archivo en el archivo, de lo contrario, el nombre se toma del atributoname de fileobj, o del argumento name. El nombre debe ser una cadena de texto.

Puede modificar algunos de los atributos del TarInfo antes de añadirlo utilizando addfile().Si el objeto archivo no es un objeto archivo ordinario colocado al principio del archivo, puede ser necesario modificar atributos como size. Este es el caso de objetos como GzipFile.El name también puede ser modificado, en cuyo caso arcnam podría ser una cadena ficticia.

Cambiado en la versión 3.6: El parámetro name acepta un objeto tipo ruta.

TarFile.close

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *