Novità di Python qui. Voglio camminare attraverso un grande file mbox, analizzando i messaggi di posta elettronica. Posso farlo con:Analisi di file mbox in Python
import sys
import mailbox
def gen_summary(filename):
mbox = mailbox.mbox(filename)
for message in mbox:
subj = message['subject']
print subj
if __name__ == "__main__":
if len(sys.argv) != 2:
print 'Usage: python genarchivesum.py mbox'
sys.exit(1)
gen_summary(sys.argv[1])
Ma ho bisogno di più controllo. Devo essere in grado di ottenere la posizione in byte dell'inizio di una determinata email nel file mbox e ho anche bisogno di ottenere il numero di byte nel messaggio (come rappresentato sul disco). E poi in futuro, invece di iterare dall'inizio del file mbox, ho bisogno di essere in grado di cercare un dato messaggio e solo analizzarlo (quindi uno dei bisogni di ottenere la posizione dei byte sul disco). Questi sono file mbox di grandi dimensioni e l'efficienza è una preoccupazione.
Lo scopo di tutto questo è che posso generare un file di riepilogo, che contiene alcuni piccoli dettagli su ciascuna e-mail nella mbox, e quindi in futuro cercare in modo efficiente le singole e-mail all'interno della mbox.
Non ho mai usato 'mailbox', ma ho appena letto' help (mailbox.mbox) '. Non puoi usare il metodo '.iterkeys()' per ottenere un iteratore di valori chiave e quindi usare i valori chiave per trovare i messaggi? Perché vuoi usare un indice di byte come chiave per trovare un messaggio invece di usare il modulo ... hai provato a usare il modulo per indicizzare i messaggi per chiave? Se l'hai provato ed è troppo lento o qualcosa del genere, ti preghiamo di dirlo. – steveha
Dire che ho un mbox di 10.000 email. Non voglio dover leggere/analizzare/scorrere oltre 9,998 di loro quando voglio solo l'ultima email. Mi piacerebbe cercare fino a quel momento nel file mbox e leggere quel messaggio. –
@MarkFletcher Hai funzionato? Se è così, per favore fatemelo sapere. – kingmakerking