0% encontró este documento útil (0 votos)
4 vistas4 páginas

Acceso y manejo de archivos Tar

El módulo tarfile proporciona funciones para crear, leer y modificar archivos tar, incluidos los archivos comprimidos. Puede usar la clase TarFile para acceder a los metadatos de los archivos miembro dentro de un archivo tar, como los nombres, fechas de modificación y tamaños. También puede extraer o leer el contenido de los archivos miembro individuales.

Cargado por

usuario2deprueba
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas4 páginas

Acceso y manejo de archivos Tar

El módulo tarfile proporciona funciones para crear, leer y modificar archivos tar, incluidos los archivos comprimidos. Puede usar la clase TarFile para acceder a los metadatos de los archivos miembro dentro de un archivo tar, como los nombres, fechas de modificación y tamaños. También puede extraer o leer el contenido de los archivos miembro individuales.

Cargado por

usuario2deprueba
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

tarfile — Acceso a archivos Tar

Propósito: Acceso a archivos Tar

El módulo  tarfile  proporciona acceso de lectura y escritura a archivos de Unix


tar, incluyendo archivos comprimidos. Además de los estándares POSIX, varias
extensiones de tar de GNU son compatibles. Tipos especiales de archivos Unix,
como los enlaces duros y blandos, y los nodos de dispositivos también son
manejados.

Nota

Aunque  tarfile  implementa un formato Unix, puede usarse también para crear y
leer archivos tar en Microsoft Windows.
Archivos Tar de prueba
La función  is_tarfile()  devuelve un valor booleano que indica si o no, el nombre
de archivo pasado como argumento hace referencia a un archivo tar válido.

tarfile_is_tarfile.py
import tarfile

for filename in ['[Link]', '[Link]',


'bad_example.tar', '[Link]']:
try:
print('{:>15} {}'.format(filename, tarfile.is_tarfile(
filename)))
except IOError as err:
print('{:>15} {}'.format(filename, err))
Si el archivo no existe,  is_tarfile()  levanta el  IOError .

$ python3 tarfile_is_tarfile.py

[Link] False
[Link] True
bad_example.tar False
[Link] [Errno 2] No such file or directory:
'[Link]'

Leer de metadatos de un archivo


Usa la clase  TarFile  para trabajar directamente con un archivo tar. Ésta admite
métodos para leer datos sobre archivos existentes, así como modificar los
archivos agregando archivos adicionales.

Para leer los nombres de los archivos en un archivo existente, usa  getnames() .
tarfile_getnames.py
import tarfile

with [Link]('[Link]', 'r') as t:


print([Link]())

El valor de retorno es una lista de cadenas con los nombres del contenido del
archivo.

$ python3 tarfile_getnames.py

['[Link]', '[Link]']
Además de los nombres, los metadatos sobre los miembros del archivo están
disponibles como instancias de objetos  TarInfo .

tarfile_getmembers.py
import tarfile
import time

with [Link]('[Link]', 'r') as t:


for member_info in [Link]():
print(member_info.name)
print(' Modified:', [Link](member_info.mtime))
print(' Mode :', oct(member_info.mode))
print(' Type :', member_info.type)
print(' Size :', member_info.size, 'bytes')
print()
Cargue los metadatos a través de  getmembers()  y  getmember() .

$ python3 tarfile_getmembers.py

[Link]
Modified: Fri Aug 19 16:27:54 2016
Mode : 0o644
Type : b'0'
Size : 9878 bytes

[Link]
Modified: Fri Aug 19 16:27:54 2016
Mode : 0o644
Type : b'0'
Size : 75 bytes

Si el nombre del miembro del archivo es conocido de antemano, su


objeto  TarInfo  se puede recuperar con  getmember() .

tarfile_getmember.py
import tarfile
import time

with [Link]('[Link]', 'r') as t:


for filename in ['[Link]', '[Link]']:
try:
info = [Link](filename)
except KeyError:
print('ERROR: Did not find {} in tar archive'.format(
filename))
else:
print('{} is {:d} bytes'.format(
[Link], [Link]))
Si el miembro del archivo no está presente,  getmember()  levanta un  KeyError .

$ python3 tarfile_getmember.py

[Link] is 75 bytes
ERROR: Did not find [Link] in tar archive

Extraer archivos de un archivo


Para acceder a los datos de un miembro del archivo dentro de un programa, usa
el método  extractfile() , pasando el nombre del miembro.

tarfile_extractfile.py
import tarfile

with [Link]('[Link]', 'r') as t:


for filename in ['[Link]', '[Link]']:
try:
f = [Link](filename)
except KeyError:
print('ERROR: Did not find {} in tar archive'.format(
filename))
else:
print(filename, ':')
print([Link]().decode('utf-8'))

El valor de retorno es un objeto similar a un archivo desde el cual se pueden leer


los contenidos del miembro del archivo.

$ python3 tarfile_extractfile.py

[Link] :
The examples for the tarfile module use this file and
[Link] as data.

ERROR: Did not find [Link] in tar archive


Para descomprimir el archivo y escribir los archivos en el sistema de archivos,
usa  extract()  o  extractall()  en su lugar.

tarfile_extract.py
import tarfile
import os

[Link]('outdir')
with [Link]('[Link]', 'r') as t:
[Link]('[Link]', 'outdir')
print([Link]('outdir'))
El miembro o miembros se leen del archivo y se escriben en el sistema de
archivos, comenzando en el directorio nombrado en los argumentos.

$ python3 tarfile_extract.py
['[Link]']

La documentación de la biblioteca estándar incluye una nota que indica


que  extractall()  es más segura que  extract() , especialmente para trabajar con
la transmisión de datos donde rebobinar para leer una parte anterior de la
entrada no es posible, y debe utilizarse en la mayoría de los casos.

También podría gustarte