> Lo que necesito que haga mi programa es:
> 1. Leer linea a linea archivo1.txt
> 2. Cada vez que se lea una línea de archivo1.txt busque si esa palabra
> se encuentra en archivo2.xml
> 3. Si la palabra NO se encuentra en archivo2.xml se debe crear un
> archivo nuevo (diferencias.txt) que agregue esa palabra que no encontro
> en archivo2.xml. Si el archivo diferencias.tx ya existe entonces que
> agregue una linea nueva al archivo diferencias.txt con la palabra en
> cuestion.
Python sería un lenguaje "de scripting" muy, muy triste, si para conseguir esto
necesitáramos tal cantidad de código. Sin cubrir quizá todos los detalles,
podrías partir de algo así:
output = (line for line in open("archivo1.txt")
if line.strip() not in open("archivo2.xml").read())
open("diferencias.txt", "a+").writelines(output)
Por cierto, añadir datos a archivos (operación no idempotente) suele ser una
mala idea, yo usaría el modo "w" y si hay diferentes fuentes las uniría después.
Conceptualmente no sé si tiene mucho sentido mirar si una palabra está o no en
un formato estructurado como XML, pero bueno, supongo que eso ya lo tienes
controlado.
_______________________________________________
Python-es mailing list
Pyth...@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/
¿Es abordable meter todas las palabras de archivo2.xml en un set? Si
es así hazlo y verás que rapidito vas. Si no es abordable meterlo en
memoria, puedes probar a usar una berkeleydb.
http://docs.python.org/library/sets.html#module-sets
http://docs.python.org/library/bsddb.html#module-bsddb
Los dos modulos han sido marcados como "deprecated". El primero viene
incluido como tipo del sistema y para el segundo puedes usar las
librerias de jcea (otro listero).
http://www.jcea.es/programacion/pybsddb.htm
Así que no preocuparse por quedarse sin soporte ;-)
Un saludo:
Javi
A priori, mi sugerencia es una de las siguiente (sobre todo si hubiera
algún órden ... ;o) :
- Generar XML a partir del fichero texto y hacer un diff
con lxml (al nivel de las etiquetas ;o)
- Generar texto a partir del fichero XML y hacer un diff
normal (e.g. udiff ) con difflib
--
Regards,
Olemis.
Blog ES: http://simelo-es.blogspot.com/
Blog EN: http://simelo-en.blogspot.com/
Featured article:
La mejor vacuna contra el virus A(H1N1) es la higiene personal
> Esto te puede dar las lineas sin \n
>
> f = open("archivo1.txt","r")
> lines = []
> for line in f.readlines():
> if line <> '\n':
> lines.append(line.replace('\n',''))
> f.close()
> print lines
Mejor:
lines = [line.rstrip() for line in open("archivo1.txt") if line.strip()]