Presentación y cargando un archivo en un diccionario.
Chema Cortés
py en ch3m4.org
Mar Jun 1 15:29:31 CEST 2004
El Martes, 1 de Junio de 2004 12:49, Víctor Peinado escribió:
> - ¿Es necesario comprobar que se ha cargado correctamente el archivo? O
> preguntando de otro modo, ¿cómo se traduce el siguiente idiom de Perl?
>
> open FILEHANDLE, $file or die "$!"
Si llegara a producirse un error, saltaría una excepción si posibilidad de
comprobar el valor que retorna. Hay que tener presente que los errores en
python producen "excepciones", y que sólo se deben procesar aquellas
excepciones de las que se sepa recuperarse. Por ejemplo, el fragmento de perl
sería algo así:
try:
f=file(stopwordsFile)
except Exception, e:
sys.stderr.write( e.errno )
Pero el mecanismo de excepciones daría para hacer muchas cosas más:
try:
f=file(stopwordsFile)
except OSError, e:
print "No he podido abrir el fichero"
f=None
except Exception, e:
print "Ha habido un error que no sé cómo tratar"
print e.errno,e.strerror
raise #mandamos el error "hacia arriba" en la pila de ejecución
Incluso se podría entrar en el debugger python para intentar averiguar algo:
except:
import sys,pdb
t=sys.exc_info()
pdb.post_mortem(t[2])
> - ¿Es necesario cerrar el archivo por defecto se cierra cuando abra otro o
> cuando termine el script?
No, pero sería recomendable. Cuando ningún quede ningún objeto que referencie
al archivo abierto, el recolector de basura (gc) eliminará de memoria la
referencia al objeto, cerrándose en ese momento el fichero.
> - ¿Existe alguna variable interna de Python que guarde los errores, como
> hace $! en Perl?
No existe algo así de global y general. Los errores en python se encapsulan en
excepciones para procesarlos sin peligro de que sean machacados por futuros
errores. Si quieres saber el número de error, lo tienes en la propiedad
'.errno' de la excepción.
Si quieres saber el nombre del error, usa el módulo 'errno'
from errno import errorcode
print errorcode[e.errno]
> - ¿La forma más sencilla de recorre un fichero de texto línea a línea es
> usando el módulo fileinput y haciendo?
>
> for linea in fileinput.input():
> print linea
Lo más sencillo:
for linea in file("MiFichero"):
print linea
El fileinput es un módulo de ayuda con el que se puede procesar un listado de
ficheros dado en la línea de comandos.
> - ¿Dónde puedo leer algo acerca de interpolación de variables en cadenas y
> demás?
Mira el operador de formateo "%". El resto de métodos de las cadenas de
caracteres también pueden serte útiles:
a='mundo'
print "hola, %s" % a #imprime: "hola, mundo"
a=[ "mundo", 2004, 1]
print "hola %s" % a #imprime: "hola ['mundo', 2004, 1]"
print "hola %s - año %d:%02d" % tuple(a) #imprime: "hola mundo - año 2004:01"
print ",".join([str(x).upper() for x in a]) #imprime: MUNDO,2004,0
#éste ejemplo usaba la comprensión de listas.
a={"nombre":"Pepe", "tel":1234}
print "Nombre: %(nombre)s - Tel: %(tel)06d" % a
#imprime: "Nombre: Pepe - Tel: 00123"
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es
Más información sobre la lista de distribución Python-es