Por partes: 2012/11/20 Carlos Agulló Calvo <cm.agu...@gmail.com>: > Hola de nuevo, tengo un par de dudas básicas más (por cierto, si este no es > el sitio apropiado para mi nivel/poner dudas decidmelo);
Por supuesto que este es el lugar, para eso está. > def abrirmes(): > mes=open('ABRIL2005.txt','r') > [...] > def leermes(): > fila=mes.readline() > [...] > abrirmes() > leermes() abrirmes() en efecto está abriendo el archivo, pero tienes que tener en cuenta que "mes" es una variable local. Hagas lo que hagas con una variable dentro de una función, al salir de la función se va a morir. def f(): x = 2 print 'x es', x x = 1 f() # Devuelve 2 print 'Ahora, x es', x # Devuelve 1. Si quieres conservar tu estructura de funciones, tienes que devolver los valores. def f(): x = 2 return x x = f() print x # Ahora sí que da 2. Pero, ¿seguro que quieres hacer tantas funciones tan atómicas? Es mucho más legible un código más continuo. > y quiero que si el primer código es 0303201 me escriba la línea en el > archivo est_0303201 y si no, pues que pase de línea; > lo he intentado de la siguiente manera: > > infile=mes.readline() > for line in infile: > if line[1:8]==0303201: > archivo_0303201.write(line) > > y me da error al leer line[1:8] ¡Ah! Errorcillo sutil. readline lee UNA línea, por lo que infile es una cadena con la primera línea del archivo. for line in infile itera sobre los elementos de la cadena (cada letra). Y claro, una letra no tiene elementos del 1 al 8. Lo que tú quieres hacer es usar readlines(), con s al final, o usar directamente el archivo. for line in mes Tienes otro fallo: if line[1:8]==0303201 está comparando una cadena de texto con un número, eso nunca va a ser verdad. Tienes que hacer if line[1:8]=='0303201': Para evitar equivocarte contando, puedes usar el método startswith de string: if line.startswith('0303201', start = 1) (El 1 es para saltarte el ") _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/