¿Existe un módulo de Python para la coincidencia de expresiones regulares en archivos zip?

StackOverflow https://stackoverflow.com/questions/14281

Pregunta

Tengo más de un millón de archivos de texto comprimidos en 40 archivos zip.También tengo una lista de unos 500 nombres de modelos de teléfonos.Quiero saber la cantidad de veces que se mencionó un modelo en particular en los archivos de texto.

¿Existe algún módulo de Python que pueda hacer una coincidencia de expresiones regulares en los archivos sin descomprimirlos?¿Existe una manera sencilla de resolver este problema sin descomprimir?

¿Fue útil?

Solución

No hay nada que haga automáticamente lo que quieres.

Sin embargo, existe un módulo zipfile de Python que hará que esto sea fácil de hacer.A continuación se explica cómo iterar sobre las líneas del archivo.

#!/usr/bin/python

import zipfile
f = zipfile.ZipFile('myfile.zip')

for subfile in f.namelist():
    print subfile
    data = f.read(subfile)
    for line in data.split('\n'):
        print line

Otros consejos

Puede recorrer los archivos zip, leer archivos individuales usando el módulo zipfile y ejecutar su expresión regular en ellos, eliminando la necesidad de descomprimir todos los archivos a la vez.

Estoy bastante seguro de que no se puede ejecutar una expresión regular sobre los datos comprimidos, al menos no de manera significativa.

Para acceder al contenido de un archivo zip, debe descomprimirlo, aunque el paquete zipfile lo hace bastante fácil, ya que puede descomprimir cada archivo dentro de un archivo individualmente.

Módulo de archivo zip de Python

¿No es posible (al menos teóricamente) leer la codificación Huffman del ZIP y luego traducir la expresión regular al código Huffman?¿Podría ser esto más eficiente que descomprimir primero los datos y luego ejecutar la expresión regular?

(Nota:Sé que no sería tan simple:También tendrías que lidiar con otros aspectos de la codificación ZIP (diseño de archivos, estructuras de bloques, referencias anteriores), pero uno imagina que esto podría ser bastante liviano).

EDITAR:También tenga en cuenta que probablemente sea mucho más sensato usar simplemente el zipfile solución.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top