Python novato aquí. Quiero recorrer un gran archivo mbox, analizar los mensajes de correo electrónico. Puedo hacer eso con:Analizando archivos mbox en 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])
Pero necesito más control. Necesito poder obtener la posición de bytes del inicio de un correo electrónico dado en el archivo mbox y también necesito obtener el número de bytes en el mensaje (como se representa en el disco). Y luego, en el futuro, en lugar de iterar desde el principio del archivo mbox, necesito poder buscar un mensaje determinado y analizarlo (de ahí una de las necesidades de obtener la posición de byte en el disco). Estos son grandes archivos mbox y la eficiencia es una preocupación.
El propósito de todo esto es que puedo generar un archivo de resumen, que contiene algunos pequeños bits sobre cada correo electrónico en el mbox, y luego, en el futuro, buscar eficientemente los correos electrónicos individuales dentro del mbox.
Nunca he usado 'mailbox', pero acabo de leer' help (mailbox.mbox) '. ¿No puedes usar el método '.ritkeys()' para obtener un iterador de valores clave, y luego usar los valores clave para encontrar mensajes? ¿Por qué quiere usar un índice de bytes como clave para encontrar un mensaje en lugar de usar el módulo ... ha intentado utilizar el módulo para indexar los mensajes por clave? Si lo has probado y es demasiado lento o algo así, dímelo. – steveha
Digamos que tengo un mbox de 10,000 correos electrónicos. No quiero tener que leer/analizar/iterar más de 9.998 de ellos cuando solo quiero el último correo electrónico. Me gustaría buscar ese punto en el archivo mbox y simplemente leer ese mensaje. –
@MarkFletcher ¿Lo entiendes? Si es así, por favor hágamelo saber. – kingmakerking