{"id":7948,"date":"2015-07-06T06:23:14","date_gmt":"2015-07-06T11:23:14","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/ccpg1001\/?p=7948"},"modified":"2026-03-02T12:13:52","modified_gmt":"2026-03-02T17:13:52","slug":"archivos-txt-diccionarios","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-unidades\/fp-u07\/archivos-txt-diccionarios\/","title":{"rendered":"7.3 Archivos texto \u2013 con diccionarios en Python"},"content":{"rendered":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#abrir\">Abrir<\/a><\/p>\n\n\n\n<p><a href=\"#guardar\">Guardar<\/a><\/p>\n\n\n\n<p><a href=\"#procesar\">Procesar<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p>Para abrir y guardar un archivo se dispone de un ejemplo de una tabla de <a href=\"https:\/\/www.dropbox.com\/s\/mn5za4xzi7afitl\/voluntarios.txt?dl=0\">voluntarios.txt<\/a>. La actividad es continuaci\u00f3n del ejercicio \"Playat\u00f3n, limpieza de Playas\".<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#abrir\">Abrir<\/a><\/p>\n\n\n\n<p><a href=\"#guardar\">Guardar<\/a><\/p>\n\n\n\n<p><a href=\"#procesar\">Procesar<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"abrir\">1. Abrir un archivo<\/h2>\n\n\n\n<p>Para el manejo de un <strong><em>archivo<\/em> <\/strong>es necesario 'abrir' el proceso con la instrucci\u00f3n <code>open()<\/code> que requiere un <em>nombre de archivo <\/em>y el par\u00e1metro de lectura <code>'r'<\/code> (read).<\/p>\n\n\n\n<p>El archivo de ejemplo <a href=\"https:\/\/www.dropbox.com\/s\/mn5za4xzi7afitl\/voluntarios.txt?dl=0\"><strong>voluntarios.txt<\/strong><\/a> para la lectura se debe encontrar en el mismo directorio del script de Python. Si se ubica el archivo en otro directorio se a\u00f1ade la ruta al nombre del archivo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1234,Juan,921,5.4\n9874,Ana,138,6.2\n2345,Pedro,432,6.2<\/code><\/pre>\n\n\n\n<p>La lectura de datos para la lista de ejemplo es l\u00ednea por l\u00ednea hasta encontrar una l\u00ednea vac\u00eda (<code>''<\/code>) al final del archivo.<\/p>\n\n\n\n<p>En el ejemplo, se separan los datos con la instrucci\u00f3n <code>split()<\/code>, se los ingresa en un registro para un diccionario que se adjunta la lista de <strong><em>voluntarios<\/em><\/strong>.<\/p>\n\n\n\n<p>Al final es necesario cerrar el archivo mediante <code>archivo.close()<\/code><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\nprint(' --- Abrir archivo de voluntarios---')\nvoluntarios=&#x5B;]   # lista para datos\n\n# prepara el modo lectura(read 'r') de archivo\narchivo=open('voluntarios.txt','r')\nlinea=archivo.readline() #lee primera linea del archivo\n\nwhile (linea!=''):  #Hasta encontrar final de archivo\n    datos=linea.split(',')  # datos separados por comas\n    ced=int(datos&#x5B;0])\n    nom=datos&#x5B;1]\n    pla=int(datos&#x5B;2])\n    rec=float(datos&#x5B;3])\n\n    # crea el registro como diccionario para la lista\n    registro={'cedula':ced,\n          'nombre': nom,\n          'playa':pla,\n          'recolectado':rec}\n    voluntarios.append(registro)\n\n    # Lee la siguiente linea\n    linea=archivo.readline()\n\narchivo.close()         # Cierra el archivo    \nn=len(voluntarios)\nprint(' Se recuperaron '+ str(n) + ' registros')\n\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#abrir\">Abrir<\/a><\/p>\n\n\n\n<p><a href=\"#guardar\">Guardar<\/a><\/p>\n\n\n\n<p><a href=\"#procesar\">Procesar<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"guardar\">2. Guardar un archivo<\/h2>\n\n\n\n<p>para almacenar un <strong><em>archivo<\/em> <\/strong>es necesario 'abrir' el proceso con la instrucci\u00f3n <code>open()<\/code> que requiere un <em>nombre de archivo <\/em>y el par\u00e1metro de lectura <code>'w'<\/code> de \"write\".<\/p>\n\n\n\n<p>Se escriben los datos en una l\u00ednea de texto. Al usar los registros de una lista, se los concatena separador por comas <code>','<\/code> antes de escribir la l\u00ednea en el archivo.<\/p>\n\n\n\n<p>Al final es necesario cerrar el archivo mediante <code>archivo.close()<\/code><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\nprint('---- guardar el archivo de voluntarios ---')\n\n# prepara el modo escritura(write 'w') de archivo\narchivo=open('voluntarios.txt','w')\n\nn=len(voluntarios)\nfila=0\nwhile not(fila&gt;=n):\n\n    # Crea linea de texto con datos para un registro, \n    # separada por comas\n    cadena = voluntarios&#x5B;fila]&#x5B;'cedula'])+','\n    cadena = cadena + voluntarios&#x5B;fila]&#x5B;'nombre'] +','\n    cadena = cadena + str(voluntarios&#x5B;fila]&#x5B;'playa']) +','\n    cadena = cadena +str(voluntarios&#x5B;fila]&#x5B;'recolectado']\n    registro= str(cadena) +'\\n'\n\n    # Escribe en el archivo\n    archivo.write(registro)\n    fila = fila + 1\n\narchivo.close()     # Cierra el archivo    \nprint('archivo guardado...')\n\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#abrir\">Abrir<\/a><\/p>\n\n\n\n<p><a href=\"#guardar\">Guardar<\/a><\/p>\n\n\n\n<p><a href=\"#procesar\">Procesar<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"procesar\">3. Ejercicio - procesar por cada registro<\/h2>\n\n\n\n<p>A partir del archivo adjunto: '<a href=\"https:\/\/www.dropbox.com\/s\/9cj2khwnsxg4sld\/voluntarios2.txt?dl=0\">voluntarios2.txt<\/a>' , realizar cada \u00edtem sin cargar todos los registros en memoria, procesar registro por registro.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Calcule cu\u00e1ntos voluntarios se registraron en cada playa<\/li>\n\n\n\n<li>Determine el total de residuos recolectados en cada playa<\/li>\n\n\n\n<li>Muestre el total de playas atendidas y el total recolectado en el evento.<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>1234,Juan,921,5.4\n9874,Ana,138,6.2\n2345,Pedro,432,6.2\n4464,Carmen,921,7.746045618\n1654,Rosa,138,8.801108179\n5892,Carlos,432,11.63081858\n746,Juan,921,9.026632449\n1630,Roberto,138,6.330733618\n5374,Barbara,432,8.973105901\n7045,Delia,921,2.691247379\n4896,Elena,138,5.753989473\n2276,karen,432,3.541916166\n3862,Byron,921,9.215178996\n1228,Daniel,138,11.10185605\n5776,Fernando,432,3.743467333\n6859,Gerardo,921,11.32735615\n4048,Luis,138,8.775777268\n7329,Mario,432,3.663067739\n6513,Mercedes,921,7.189236877\n3574,Patricio,138,8.390980584\n9346,Paola,432,7.640959705\n9180,Sara,921,9.341800838\n5923,Tania,138,10.24375357\n1254,Valeria,432,8.184033273\n181,Washington,921,11.54233745\n9558,Xavier,138,8.369232005\n5019,Zoila,432,10.74144661\n5036,Carlos,921,7.511491918\n385,Juan,138,8.065057021\n1256,Roberto,432,4.228084882\n245,Barbara,138,5.102971916\n234,Delia,432,3.830932219\n6564,Elena,921,9.838714135\n8767,karen,138,6.038399291\n435,Byron,432,2.365789617<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#abrir\">Abrir<\/a><\/p>\n\n\n\n<p><a href=\"#guardar\">Guardar<\/a><\/p>\n\n\n\n<p><a href=\"#procesar\">Procesar<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n","protected":false},"excerpt":{"rendered":"<p>Abrir Guardar Procesar Para abrir y guardar un archivo se dispone de un ejemplo de una tabla de voluntarios.txt. La actividad es continuaci\u00f3n del ejercicio \"Playat\u00f3n, limpieza de Playas\". Abrir Guardar Procesar 1. Abrir un archivo Para el manejo de un archivo es necesario 'abrir' el proceso con la instrucci\u00f3n open() que requiere un nombre [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"wp-custom-template-entrada-fp-unidades","format":"standard","meta":{"footnotes":""},"categories":[108],"tags":[],"class_list":["post-7948","post","type-post","status-publish","format-standard","hentry","category-fp-u07"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/7948","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/comments?post=7948"}],"version-history":[{"count":4,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/7948\/revisions"}],"predecessor-version":[{"id":21913,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/7948\/revisions\/21913"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=7948"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=7948"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=7948"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}