Python Email Grabber

June 20, 2006 on 2:02 pm | In General, Python | 5 Comments

Voici quelques lignes de Python qui vont vous permettre de récupérer en quelques secondes tous les emails contenus dans un ou plusieurs fichiers. Ce code utilise le module re, dédié aux expressions régulières. On scanne un repertoire et on extrait tous les emails contenus dans chaque fichier.

Adaptez le code à vos besoins.

def readFile(inFile):
# fonction qui permet de lire le contenu d’un fichier
f=open(inFile,“r”)
contents=f.read()
f.close()
return contents

def writeFile(outFile,contents):
# fonction qui permet d’ecrire du contenu dans un fichier
f=open(outFile,“w”)
f.write(contents)
f.close()

def getEmailsInFile(inFile):
# permet de lire un fichier puis d’en extraire une liste d’emails
contents = readFile(inFile)
return getEmails(contents)

def getEmails(contents):
# extrait tous les mails contenus dans une chaine
import re
exprat=re.compile(‘[0-9a-z.-]+[@][0-9a-z.-]+’)     # la regexp qui detecte les emails
mailz = exprat.findall(contents)    # retourne une liste avec tous les resultats
return mailz

import os

rootPath = r“c:RepertoireAAnalyser” # repertoire à  analyser
lstEmails = []   # liste vide

for afile in os.listdir(rootPath):
fullPath = os.path.join(rootPath,afile)
if os.path.isfile(fullPath):                              # si fichier
for email in getEmailsInFile(fullPath):              # detection emails
if email not in lstEmails:                                 # verif doublons
lstEmails.append(email)

print “%s emails trouvés” % len(lstEmails)       

# exporte la liste dans un fichier ‘Emails.csv’, les emails séparés par des retours à  la ligne (
)
writeFile(os.path.join(rootPath,“Emails.csv”),
.join(lstEmails))

5 Comments »

RSS feed for comments on this post. TrackBack URI

  1. Ouah c’est trop beau le python ;) Ceci dit, même si je ne suis pas pythonien, je m’étonne de voir :

    rootPath = r”c:\RepertoireAAnalyser”

    Le “r” n’est pas en trop ?

    Comment by jidé — 20 June 2006 #

  2. Et oui c’est beau le python ;) et encore la je me suis pas lancé dans une vraie pythonisation du code, ca aurait être encore plus joli ;)

    Le préfixe “r” permet simplement de préciser que la chaine qui suit ne sera pas ‘interprétée’, en tous cas pour ce qui est des caractères speciaux.

    Je m’explique :

    dans “c:\tests” , le “\t” serait interprété comme un caractère “tabulation” si on omet le “r” en préfixe.

    Il faudra donc noter :

    r”c:\tests” ou “c:\\tests” pour obtenir le résultat voulu ;)

    Comment by Juju — 20 June 2006 #

  3. Par contre j’avoue que mon plugin de colorisation WordPress ne marche pas génial pour Python :(

    dsl guys ;)

    Comment by Juju — 20 June 2006 #

  4. Okéééé :) subtile la bête ! Sympa de pouvoir préciser ça comme ça tout simplement, ca change du javascript ;)

    C’est vrai que les couleurs pourraient être plus sympa, peut etre un meilleur plugin ? Et d’ailleurs quand est ce que tu passes à wp 2.0 ? :)

    Comment by jidé — 20 June 2006 #

  5. Des que je l’install sur ma dedibox et que je fais un bon url rewriting pour pas perdre mon referencement.

    Comment by Juju — 20 June 2006 #

Leave a comment

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Powered by WordPress with Pool theme design by Borja Fernandez.
Entries and comments feeds. Valid XHTML and CSS. ^Top^