Tengo un archivo tar que tiene una cantidad de archivos dentro. Necesito escribir un script de python que lea el contenido de los archivos y proporcione el recuento total de caracteres, incluyendo el número total de letras, espacios, caracteres de nueva línea, todo, sin anular la tarificación del archivo tar.leyendo el contenido del archivo tar sin marcarlo, en la secuencia de comandos python
Respuesta
puede utilizar GetMembers()
>>> import tarfile
>>> tar = tarfile.open("test.tar")
>>> tar.getmembers()
Después de eso, puede utilizar extractfile() para extraer los miembros como objeto de archivo. Sólo un ejemplo
import tarfile,os
import sys
os.chdir("/tmp/foo")
tar = tarfile.open("test.tar")
for member in tar.getmembers():
f=tar.extractfile(member)
content=f.read()
print "%s has %d newlines" %(member, content.count("\n"))
print "%s has %d spaces" % (member,content.count(" "))
print "%s has %d characters" % (member, len(content))
sys.exit()
tar.close()
Con el objeto de archivo "F" en el ejemplo anterior, puede utilizar read(), readlines(), etc.
" para miembro en tar.getmembers() "se puede cambiar a" para miembro en tar "que es un generador o un iterador (no estoy seguro de cuál). Pero se obtiene un miembro de a uno por vez. – huggie
Acabo de tener un problema similar, pero el módulo tarfile parece comer mi memoria RAM, aunque utilicé la opción ''r | ''. – devsnd
Ah. Lo solucioné Asumiendo que escribirías el código como lo sugirió Huggie, debes "limpiar" la lista de miembros de vez en cuando. Entonces, dado el ejemplo de código anterior, ese sería 'tar.members = []'. Más información aquí: http://bit.ly/JKXrg6 – devsnd
necesita utilizar el módulo tarfile. En concreto, se utiliza una instancia de la clase tar para acceder al archivo, y luego acceder a los nombres con TarFile.getnames()
| getnames(self)
| Return the members of the archive as a list of their names. It has
| the same order as the list returned by getmembers().
Si por el contrario desea leer el contenido de , a continuación, utiliza este método
| extractfile(self, member)
| Extract a member from the archive as a file object. `member' may be
| a filename or a TarInfo object. If `member' is a regular file, a
| file-like object is returned. If `member' is a link, a file-like
| object is constructed from the link's target. If `member' is none of
| the above, None is returned.
| The file-like object is read-only and provides the following
| methods: read(), readline(), readlines(), seek() and tell()
Nota, puede acceder al miembro a través de un índice construido como 'myFile = myArchive.extractfile (dict (zip (myArchive.getnames(), myArchive.getmembers())) ['path/to/file']). read() ' – ThorSummoner
Una puesta en práctica de los métodos mencionados por @ Stefano Borini- acceder a un miembro archivos tar a través de nombre de archivo como así
#python3
myFile = myArchive.extractfile(
dict(zip(
myArchive.getnames(),
myArchive.getmembers()
))['path/to/file']
).read()`
Créditos:
dict(zip(
de https://stackoverflow.com/a/209854/1695680tarfile.getnames
de https://stackoverflow.com/a/2018523/1695680- Además, para mis usos, la lectura de un archivo tar desde el buffer How to construct a TarFile object in memory from byte buffer in Python 3?
- 1. Leyendo el encabezado de un cliente de la secuencia de comandos CGI de Python?
- 2. HP-UX - ¿Cómo puedo leer un archivo de texto del archivo tar sin extraerlo?
- 3. leyendo el archivo csv sin para
- 4. Pasando el valor de la secuencia de comandos PHP a la secuencia de comandos de Python
- 5. Cómo ejecutar una secuencia de comandos python sin especificar la extensión de archivo (solución multiplataforma)?
- 6. leyendo un archivo en python
- 7. Android: Leyendo del archivo (Openfileinput)
- 8. Obtener el nombre del archivo de secuencia de comandos actual
- 9. Leyendo el contenido de un archivo en sharpsvn
- 10. Crear archivo tar sin estructura de carpeta
- 11. leyendo continuamente de una secuencia?
- 12. secuencia de comandos para realizar la entrada de contenido en un archivo de texto
- 13. ¿Cómo se ejecuta una secuencia de comandos de Python en el lado del servidor usando jQuery?
- 14. La secuencia de comandos PHP no puede obtenerse desde la secuencia de comandos de Python
- 15. Descomprime el archivo tar en el directorio
- 16. leyendo el archivo MANIFEST.MF del archivo jar usando JAVA
- 17. Obtener contenido dentro de la secuencia de comandos como texto
- 18. Modifique la secuencia de comandos python para que se ejecute en cada archivo en un directorio
- 19. La secuencia de comandos de vigilancia Python no funciona correctamente
- 20. ¿Cómo borrar el contenido del archivo de texto en Python?
- 21. ¿cómo detengo la ejecución en una secuencia de comandos python?
- 22. Escucha en una secuencia de comandos de contenido
- 23. Powershell pipe contenido del archivo en la aplicación sin cargar el archivo en la memoria
- 24. C++ leyendo el carácter sin signo de la secuencia de archivos
- 25. leyendo el archivo con valores perdidos en Python pandas
- 26. ¿Abrir el tipo de archivo específico con la secuencia de comandos de Python?
- 27. En la secuencia de comandos de Python, ¿cómo configuro PYTHONPATH?
- 28. ¿Cómo se invoca una secuencia de comandos python dentro de un archivo jar utilizando Python?
- 29. ¿Cómo incluir .htaccess en los comandos tar?
- 30. Comparar el archivo tar del directorio con el directorio original
¿Cómo se puede contar el caracteres/letras/espacios/Everthing sin necesidad de extraer aquellos a otro lugar? – YOU
esa es precisamente la pregunta. –