Existe-t-il un module python pour la correspondance des expressions régulières dans les fichiers zip

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

Question

J'ai plus d'un million de fichiers texte compressés dans 40 fichiers zip.J'ai également une liste d'environ 500 noms de modèles de téléphones.Je souhaite connaître le nombre de fois qu'un modèle particulier a été mentionné dans les fichiers texte.

Existe-t-il un module Python capable de faire une correspondance d'expression régulière sur les fichiers sans le décompresser.Existe-t-il un moyen simple de résoudre ce problème sans décompresser ?

Était-ce utile?

La solution

Rien ne fera automatiquement ce que vous voulez.

Cependant, il existe un module python zipfile qui facilitera cette tâche.Voici comment parcourir les lignes du fichier.

#!/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

Autres conseils

Vous pouvez parcourir les fichiers zip, lire des fichiers individuels à l'aide du module zipfile et exécuter votre regex sur ceux-ci, éliminant ainsi la décompression de tous les fichiers en même temps.

Je suis presque certain que vous ne pouvez pas exécuter une expression régulière sur les données compressées, du moins pas de manière significative.

Pour accéder au contenu d'un fichier zip, vous devez le décompresser, bien que le package zipfile rende cela assez simple, car vous pouvez décompresser chaque fichier d'une archive individuellement.

Module de fichier zip Python

N'est-il pas (au moins théoriquement) possible de lire le codage Huffman du ZIP puis de traduire l'expression rationnelle en code Huffman ?Cela pourrait-il être plus efficace que de décompresser d'abord les données, puis d'exécuter l'expression rationnelle ?

(Note:Je sais que ce ne serait pas si simple :vous devrez également gérer d'autres aspects du codage ZIP (disposition des fichiers, structures de blocs, références arrière) mais on imagine que cela pourrait être assez léger.)

MODIFIER:Notez également qu'il est probablement beaucoup plus judicieux d'utiliser simplement le zipfile solution.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top