You are on page 1of 10
7ar2020 -Jupyter Notebook Viewer Lectura y escritura de archivos En python se puede acceder a archivos externos al cédigo; existen varias formas de hacerlo pero la mas general para el manejo de flujo de texto es mediante la apertura y cierre del archivo con la funcion open. ‘A esta funcién se le ingresa una cadena con la ruta y otra con el método, Los métodos que se usan son: ' abre el archivo en modo lectura, el archivo debe existir previamente. “w": abre el archivo y reemplaza su contenido, sino existe lo crea. abre el archivo y agrega al final el contenido. "4": esoritura y lectura simulténea. "b": permite el modo binario, necesario para poder ubicar el cabezote en posiciones relativas. “t": permite el modo texto, es el modo por defecto y codifica los caracteres en la codificacién correcta In [1]: recet: pen(“archivo.txt","n") Tenemos varios métodos para la lectura del contenido del archivo abierto. Por un lado tenemos el método read que lee todo el contenido del archivo y deja el cabezote al final. Por el otro lado tenemos el método readline que lee la linea actual del cabezote y lo deja al final de la linea leida y por Ultimo readlines que converte cada linea del archivo en un elemento de una lista y deja el cabezote al final In [2]: print (receta.read()) Fajitas vegetarianas light Ingredientes champifiones 1 cebolla grande reduccién de aceto balsdmico palta queso Finlandia light fajitas light (las compré hechas) Pasos Cortar la cebolla en tiras poner en una sartén con la reduccién del acet Lavar los champifiones, cortarlos de la forma que mas les guste, y agrega Pelar la palta cortar en cuadrados salpimentar rociar apenas con aceite. Calentar las fajitas, poner los ingredientes en la mesa con el queso Fin hitps:Inoviewer upyter.orglurlsid dropbox.comvsleuréevinx1kib8/Pynon0S pyr ato 7ar2020 -Jupyter Notebook Viewer In [3]: print (receta.readline()) In [4]: receta.seek(27) print (receta.readline()) Ingredientes In [5]: print (receta.readlines()) [‘champifiones\n', '1 cebolla grande\n', ‘reduccién de aceto balsamico\n’ In [6]: receta.close() Si deseamos escribir de forma mas precisa, en particular si se desea mober el cabezote desde posicion relativa 0 final del archivo, lo conveniente es usar el modo binario. Lo que implica que el texto que se escriba debe usar el formato binario In [15]: receta=open("archivo.txt","rb+") receta.tell() out[15]: e In [16]: receta.seek(-1,2) print(receta.tell()) receta.write(b"\nFIn receta\n") 669 out (16): 2 In [9]: receta.seek(8) print (receta.read()) b'Fajitas vegetarianas light\nIngredientes\nchampi\xc3\xblones\n1 ceboll hitps:Inoviewer upyter.orglurlsid dropbox.comvsleuréevinx1kib8/Pynon0S pyr 210 7ar2020 -Jupyter Notebook Viewer In [10]: receta.seek(0) print (receta.readlines()) [b'Fajitas vegetarianas light\n', b'Ingredientes\n', b‘champi\xc3\xbiones\, In [12]: receta.close() In [13]: receta=open("archivo.txt", print (receta.read()) receta.close() Fajitas vegetarianas light Ingredientes champifiones 1 cebolla grande reduccién de aceto balsamico palta queso Finlandia light fajitas light (as compré hechas) Pasos Cortar 1a cebolla en tiras poner en una sartén con la reduccién del acet Lavar los champifiones, cortarlos de la forma que més les guste, y agrega Pelar la palta cortar en cuadrados salpimentar rociar apenas con aceite. Calentar las fajitas, poner los ingredientes en la mesa con el queso Fin Fin receta Guardando datos La forma mas sencilla de guardar los datos a un archivo externo es mediante el método write o writelines. write escribe la cadena de texto tal como se presenta, mientras que writelines escribe los elementos de una lista (la sta debe ser de cadenas de texto). formateando datos Hasta el momento los formatos que hemos dado a los datos han sido los obtenidos mediante los caracteres de escape \n para una linea nueva o \t para una tabulacién Por ejemplo para escribir In [17]: arc-open("prueba.txt", "w") \tL\n","2\t2\n", "3\t3\n","4\ta\n"] arc.writelines(1) arc.close() Una cadena de texto se le puede dar formato antes guardarlos, esto se puede hacer mediante dos formas: hitps:Inoviewer upyter.orglurlsid dropbox.comvsleuréevinx1kib8/Pynon0S pyr anno 7ar2020 -Jupyter Notebook Viewer usando comodines (%) 0 usando el método format de las cadenas de texto. La forma de usar los comodines es definiendo el tipo de dato que se quiere representar, estos son representacién dato ¢ entero s cadena ' real © ccaracter . representacién real-exponencial © —_representacién exponencial También se puede usar %(clave)representacién para reemplaza la clave de un diccionario. La precisién se da con el (.) luego de! numero de cifras. Ejemplos -14234545 0.000033 2.00333, (1,2,3,4,5,6,7,8) print (“hola %s"%nombre) print (“entero %d"Xentero) print (“entero preciso %.3d"%entero) print (“real %#"%real) print (“real preciso %.3f"%real) print (“real pero entero %1.f"%real) print (“real pero entero preciso %03.f"%real) print (“real-exponencial1: %.2g, real exponencial2: %.2g"%(real2,real3)) print ("X(nombre)s es %(numero) .3"%{"nombre’ “numero” :3.14234}) hola Juan entero 22 entero preciso 022 real 3.142345 real preciso 3.142 real pero entero 3 real pero entero preciso @03 real-exponencial1: 3.3e-6, real exponencial2: 0.0033 pi es 3.142 hitps:Inoviewer upyter.orglurlsid dropbox.comvsleuréevinx1kib8/Pynon0S pyr ano 7ar2020 -Jupyter Notebook Viewer "Esto es %.1f cadena usando comodines formateada con valores Xd tabla: wd Xd Kaf X1F KaF XAF BAF K.1F "%(1,2,1,2,3,2,3,4,9,8,7,4,751) print(cad1) Esto es 1.0 cadena usando comodines formateada con valores 2 tabla: 10203 2.8 3.0 4.0 9.8 8.0 7.0 4.0 7.0 1.0 Por otro lado las cadenas tienen un método llamado format que permite realizar estos reemplazos, la forma de uso es "Esto es {8} cadena usando format formateada con valores {1} tabla: {2} Gy {4} {S:.f} (6r.4f} (7: -1F} {8:.1f} {92-44} {10:.1F} sAf} = (42:.4f} (43: ay" adf. format (1,2,1,2,3,2,3,4,9,8,7,4,7,1) print (cad2) Esto es 1 cadena usando format formateada con valores 2 tabla: 1 2 3 2.8 3.0 4.0 9.0 8.0 7.0 40 7.0 1.0 O usando etiquetas hitps:Inoviewer upyter.orglurlsid dropbox.comvsleuréevinx1kib8/Pynon0S pyr 5110 7ar2020 -Jupyter Notebook Viewer “q#aConstantes c={evel} hbar={planck1} pival} otra={oc} C2={cvel: .0e} otra_mas={ultima: .2g} -format (ultima=0.@0000023241 , cvel=3e8, planck1=1.05e-34, pival=3.14,0c=2) print (cad) a##Constantes otra_mas=2.3e-07 Guardando datos Luego de dar formato a la cadena ésta se puede guardar en un archivo como In [4]: arc-open("prueba2. txt arc.write(cad1) arc.close() Guardando constantes ‘Aprovechando de que python puede leer médulos externos de forma natural podemos usar esto para ‘uardar constantes y sus definiciones usando el método write In [5]: arc=open("prueba3.py", arc.write(cad) arc.close() Guardando objetos de python Hasta el momento hemos guardado documentos de texto que tienen cierta estructura en sus datos, esto s util para guardar tablas y constantes en archivos extemos al cédigo python. Pero los objetos definidos ‘en python como arreglos y graficos pueden guardarse con un formato propio, hitps:Inoviewer upyter.orglurlsid dropbox.comvsleuréevinx1kib8/Pynon0S pyr ano 7ar2020 -Jupyter Notebook Viewer In [6]: from mi_modulo import sinc from pylab import plot, savefig from numpy import arange, save,array xsarange(0,100,0.1) ye[sine(xi) for xi in x] plot (x,y, color="blue") save("xy-npy” ,array([x,y])) savefig("grafica.png") Cargando datos ‘Ahora que hemos guardado algunos tipos de datos tenemos la contraparte de cargarlos a nuestro programa, dependiendo del tipo de datos Cargando una tabla In [7]: ## esto genera una tabla en formato texto from mi_modulo import sinc from numpy import arange, array xearange(®,100,0.1) ye[sine(xi) for xi in x] dato=(array([x,y])).T ("%.2F %.2\n"M(xi[0],xi[1]) for xi in dato J pen(“tabla.dat”, "w") arch.writelines (Tabla) arch.close() hitps:Inoviewer upyter.orglurlsid dropbox.comvsleuréevinx1kib8/Pynon0S pyr 70 7ar2020 -Jupyter Notebook Viewer In [8]: Ymatplotlib inline from nunpy import array from pylab import plot arch=open("tabla.dat","r") Tabla=arch.readlines() arch.close() datosxy-array([[eval(i) for i in xi.split(" ")] for xi in Tabla]) x=datosxy[: ,@] yedatosxy[:,1] plot(x,y) out(8]: [] 10 08 06 04 02 00 02 0 2 0 @ ® 160 Cargando un arreglo In [9]: w#vesto guarda el arreglo from mi_modulo import sinc from numpy import arange, save,array xearange(,160,0.1) ye[sinc(xi) for xi in x] save("xy.npy" array([x,y])-T) hitps:Inoviewer upyter.orglurlsid dropbox.comvsleuréevinx1kib8/Pynon0S pyr ano a2020 Jupyer Notebook Viewer In [10]: gmatplotlib inline from nunpy import load from pylab import plot datos=load("xy.npy") x-datos[:,0] y=datos[:,1] plot (x,y) out [18]: [] 10 os a6 os o2 oo 02 6 2 0 @ © 160 Cargando una imagen hitps:Inoviewer upyter.orglurlsid dropbox.comvsleuréevinx1kib8/Pynon0S pyr sno ‘212020 -Jupyter Notebook Viewer In (11): Ymatplotlib inline from pylab import inread, imshow, xticks, yticks, show img=imread("grafica.png") xticks([]) yticks(E]) imshow(img, origin=" upper’) wHNo olvidar show() out[11]: oo Winn | In[ ]: hitps:Inoviewer upyter.orglurlsid dropbox.comvsleuréevinx1kib8/Pynon0S pyr 10110

You might also like