it-swarm.dev

¿Cómo extraigo un archivo tar usando python 2.4?

Estoy tratando de extraer un archivo .tar completamente usando python 2.4.2 y debido a esto no todos los aspectos del módulo tarfile son utilizables. He revisado el python documental y no he encontrado que sea útil ya que sigo cometiendo errores de sintaxis. Los siguientes son comandos que he intentado (sin éxito):

tarfile.Tarfile.getnames(tarfile.tar)
tarfile.Tarfile.extract(tarfile.tar)

¿Hay una manera simple de extraer mi alquitrán por completo? Si es así, ¿cuál es el formato utilizado? Además, me gustaría señalar que tarfile.TarFile.extractall () no está disponible en mi python versión.

10
Connor Tepfer

Este ejemplo es de tarfile docs.

import tarfile
tar = tarfile.open("sample.tar.gz")
tar.extractall()
tar.close()

Primero, se crea un objeto TarFile usando tarfile.open(), luego todos los archivos se extraen usando extractall() y finalmente el objeto se cierra.

Si desea extraer a un directorio diferente, use extractall 's path parámetro :

tar.extractall(path='/home/connor/')

Editar: Ahora veo que está utilizando una versión antigua Python que no tiene la TarFile.extractall(). El documentación para versiones anteriores de tarfile confirma esto. En su lugar, puede hacer algo como esto:

for member in tar.getmembers():
    print "Extracting %s" % member.name
    tar.extract(member, path='/home/connor/')

Si su archivo tar tiene directorios, probablemente esto falle (no lo he probado). Para una solución más completa, vea la implementación Python 2.7 de extractall

Edición 2: Para una solución simple usando su versión anterior Python, llame al comando tar = usando subprocess.call

import subprocess
tarfile = '/path/to/myfile.tar'
path = '/home/connor'
retcode = subprocess.call(['tar', '-xvf', tarfile, '-C', path])
if retcode == 0:
    print "Extracted successfully"
else:
    raise IOError('tar exited with code %d' % retcode)
26
André Laszlo