Si tengo un archivo .tar con un archivo '/path/to/file.txt'
, ¿hay alguna manera (en Python) de extraer el archivo a un directorio especificado sin volver a crear el directorio '/path/to'
?Python: Extracto utilizando archivo tar pero ignorando directorios
Respuesta
Puede usar TarFile.extractfile(member) para extraer un archivo específico.
Devuelve un objeto similar a un archivo (Python típico) que luego puede usar para escribir los contenidos en un archivo en cualquier ubicación que desee.
Según el módulo tarfile, puede hacerlo fácilmente. Aún no lo he comprobado.
TarFile.extract(member, path="")
Documentación:
Extracto de un miembro del archivo en el directorio de trabajo actual, utilizando su nombre completo. Su información de archivo se extrae con la mayor precisión posible. miembro puede ser un nombre de archivo o un objeto TarInfo. Puede especificar un directorio diferente usando la ruta.
Por lo que debe ser capaz de hacer
TarFile.extract(member, path=".")
Véase la documentación completa en: http://docs.python.org/library/tarfile.html
Cuando los documentos dicen "al directorio de trabajo actual, usando su nombre completo", el "nombre completo" es en realidad una ruta. Podrían decir con más precisión "utilizando su ruta completa, comenzando desde el directorio de trabajo actual ... Puede especificar un directorio de inicio diferente utilizando la ruta". Entonces esta respuesta no funcionará. La respuesta de ekhumoro parece mejor. – Weeble
Los atributos de datos de un objeto TarInfo
se puede escribir. Por lo que sólo cambiar el name
a lo que usted quiere y luego extraerlo:
import sys, os, tarfile
args = sys.argv[1:]
tar = tarfile.open(args[0])
member = tar.getmember(args[1])
member.name = os.path.basename(member.name)
path = args[2] if len(args) > 2 else ''
tar.extract(member, path)
+1 para el recordatorio sobre 'os.path.basename()' – metasequoia
me encuentro con este problema también, y la lista del ejemplo completo basado en la respuesta de ekhumoro
import os, tarfile
output_dir = "."
tar = tarfile.open(tar_file)
for member in tar.getmembers():
if member.isreg(): # skip if the TarInfo is not files
member.name = os.path.basename(member.name) # remove the path by reset it
tar.extract(member,output_dir) # extract
- 1. Tar: Crear un archivo excluir directorios excepto uno
- 2. tar exclude archivos/directorios únicos, no patrones
- 3. Cómo descomprimir un archivo TAR utilizando Apache Commons
- 4. Ignorando -Inf valores en matrices utilizando numpy/scipy en Python
- 5. Cómo analizar un archivo tar en C++
- 6. cadena de escritura python directamente al archivo tar
- 7. ¿Cómo crear un archivo tar completamente comprimido usando Python?
- 8. Autotools - tar Esto no se ve como un archivo tar
- 9. Descomprimir un archivo en los informes de Solaris - tar: error de suma de comprobación de directorios
- 10. Cómo crear archivo tar plana
- 11. ¿Cómo puedo comprimir el archivo con una estructura de directorios plana utilizando Zipfile en Python?
- 12. Comando Linux tar: compresión de un directorio pero con subdirectorios
- 13. libarchive - Extracto del directorio especificado
- 14. Git está ignorando los directorios .git en los subdirectorios
- 15. Extraer solo un directorio de tar
- 16. SVN ignorando un archivo '.a'
- 17. Eliminar directorios vacíos utilizando msbuild
- 18. Descomprime el archivo tar en el directorio
- 19. Crear archivo tar sin estructura de carpeta
- 20. ¿Cómo extraigo un archivo tar en Java?
- 21. ¿Cómo extraer el archivo tar desde stdin?
- 22. Python Walk, pero Thread Lightly
- 23. Python 2.7 Hermosa sopa img src Extracto
- 24. Python: Crear directorios
- 25. Encontrar directorios vacíos en Python
- 26. Actualización de un único archivo en un archivo comprimido tar
- 27. Comparar el archivo tar del directorio con el directorio original
- 28. ¿Cómo puedo procesar un archivo tar con un grupo de multiprocesamiento de Python?
- 29. cambiando chmod para archivos pero no directorios
- 30. Rsync cómo incluir directorios pero no archivos?
que funcionaría, pero doesn no conserva los metadatos del archivo (tiempo de modificación, etc.). –