Python

Diccionarios

y

Archivos

Diccionarios

Los diccionarios son una estructura iterable de la forma clave: valor entre llaves {}

Creación de diccionarios

Diccionarios

Iterar diccionarios

Iteraciones

Hay variantes "iter" de los métodos .keys(), .values() e .items() llamados iterkeys(), itervalues() and iteritems() que evitan el costo de construir la lista completa para listas muy grandes.

Borrar

  • El operador del normalmente borra la definicion de una variable, como si nunca se hubiese definido
  • Se puede usar del en elementos o slices de una lista para borrarlos.

Material extra de lectura

Archivos

  • La función open abre un archivo y devuelve su manejador
  • Con el manejador se puede leer o escribir el archivo
  • f = open('nombre_archivo', 'r') lo abre en la variable f, sólo para ser leído
  • f.close() cierra el archivo
  • 'r' para leer, 'w' para escribir y 'a' para agregar.
  • 'rU' es un modo que es inteligente acerca de saltos de líneas, hace que siempre sean mostrados como '\n'.
  • El bucle for lee línea por línea (sólo en archivos de texto, no binarios)

Ejemplo:

#!env/bin/python
# -*- coding: utf-8 -*-

# Muestra los contenidos de un archivo
f = open('foo.txt', 'rU')
for linea in f:     ## itera sobre las linea del archivo
    print linea,    ## dejando la coma, print no agrega el
                    ## caracter de fin de línea ya que 'linea'
                    ## ya lo incluye al final de cada línea
f.close()

Lectura y escritura

  • Al leer una línea a la vez no se carga todo el archivo en memoria, lo que permite leer tamaños de archivo ilimitados
  • f.readlines() lee todo el archivo en memoria y lo retorna como una lista de líneas
  • f.read() lee el archivo completo en una variable, como cadena.
  • f.write(cadena) escribe en el archivo

Archivos Unicode

El módulo "codecs" provee soporte para leer un archivo unicode

import codecs

f = codecs.open('foo.txt', 'rU', 'utf-8')
for linea in f:
    # acá 'linea' es una cadena *unicode*

Material de lectura extra

Practiquen desarrollo incremental

  • No escribir todo el programa en 1 solo paso
  • Identificar sólo 1 primer hito, por ejemplo: "extraer la lista de palabras"
  • Escribir el código para alcanzar ese hito.
  • Se puede agregar sys.exit(0) para que el programa no avance en partes no-terminadas.
  • Una vez terminado ese hito, trabajar en el próximo.
  • Ver las variables impresas en un estado puede ayudar a pensar en cómo transformarlas en el próximo estado.
  • Pequeños algoritmos pueden ser creados y testeados en la consola
Made with Slides.com