7 - Práctica 1: manejo avanzado de archivos en Python
Lección 7 del curso Python Nivel Avanzado.
Tabla de contenido
Introducción
En la lección anterior vimos cómo realizar el manejo de archivos JSON en Python y precisamente en esta práctica usaremos esta herramienta para procesar datos directamente desde Internet.
Así que en esta primera práctica del curso usaremos lo aprendido en las lecciones anteriores para realizar la lectura y almacenamiento de archivos en diferentes formatos.
En particular veremos cómo usar Python para descargar desde la web un archivo JSON, para posteriormente procesarlo usando diccionarios en Python y finalmente almacenar este resultado del procesamiento en un archivo de texto y en un archivo tipo CSV (comma separated values).

Suscríbete y accede al código fuente y al video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online
Planteamiento del problema
La empresa City Bike de New York ofrece el servicio de alquiler de bicicletas para desplazarse por la ciudad.
El sistema de City Bike permite fácilmente al usuario encontrar una bicicleta disponible y cerca a su ubicación, usando un sistema geo-referenciado.
Pero en el fondo estos datos geo-referenciados son almacenados en archivos JSON que podemos descargar de su sitio web.
Si tomamos un registro de este archivo, encontraremos estos campos:
- id y stationName: número identificador y nombre de cada estación
- availableDocks: número de puestos disponibles para el parqueo de bicicletas
- totalDocks: número total de puestos para el parqueo de bicicletas
- latitude, longitud: coordenadas geográficas de la estación
- statusValue, statusKey: indican si la estación está funcionando (In Service, 1) o no. Para el caso de este archivo todas las estaciones están prestando servicio
- availableBikes: cantidad de bicicletas disponibles
- stAddress1, stAddress2: dirección donde se encuentra ubicada la estación
- testStation: indica si se trata de una estación de prueba. En todos los casos este valor es false
- lastCommunicationTime: fecha y hora en la que se obtuvo la última actualización de la estación
- city, postalCode, location, altitude, landMark: campos no usados
Supongamos que para una cierta aplicación que queremos desarrollar nos interesa conocer el listado actualizado de estaciones que tengan bicicletas disponibles para luego generar un archivo que contenga: el nombre de la estación, el número de bicicletas disponibles y la dirección.
Objetivos de la práctica
Implementar un programa capaz de:
- Leer el archivo JSON directamente desde la web
- Procesarlo, extrayendo la información relevante para nuestra aplicación
- Exportar los resultados del procesamiento al formato de archivo más adecuado
Implementación
Veamos entonces paso a paso la implementación de nuestro programa.
Lectura del archivo JSON
Para leer este archivo usaremos dos módulos incluidos en la Librería Estándar de Python: urlopen
y json
.
El módulo urlopen
nos permitirá acceder desde Python al sitio web (URL) que contiene el archivo JSON y realizar de esta forma la descarga del mismo. Posteriormente usaremos json
para extraer como tal la información de interés en el formato JSON.
Procesamiento de los datos y generación de archivo de texto
Crearemos inicialmente un archivo de texto con la información requerida. Por cada diccionario dentro de la lista (es decir por cada estación) extraeremos únicamente:
- Nombre de la estación: el key correspondiente es
'stationName'
- Número de bicicletas disponibles: el key correspondiente es
'availableBikes'
- Dirección: el key correspondiente es
'stAddress1'
Además, para incluir esta información en el archivo de texto verificaremos que haya bicicletas disponibles (el campo 'availableBikes'
debe ser diferente de cero).
¡Y ya tenemos nuestro archivo de texto! Aunque no resulta fácil de leer.
Podemos agregar un formato básico para que se vea organizado por columnas, usando el método format
propio de los strings en Python.
Procesamiento de los datos y generación de archivo CSV
En el caso anterior vimos que el almacenamiento de datos funciona, pero el formato escogido (TXT) no es el más adecuado pues tenemos datos en formato tabular.
Resulta más práctico usar un formato pensado especialmente para datos tabulares. Usaremos el formato CSV (comma separated values), muy usado en Ciencia de Datos y que incluso permite abrir el archivo en procesadores de hojas de cálculo como Microsoft Excel o Google Sheets.
Así que seguiremos una lógica muy similar al anterior pero cambiando el formato, lo que permitirá lograr un resultado equivalente pero con un código más compacto y más fácil de entender.
Para ello debemos usar el módulo csv
(también incluido en la Librería Estándar de Python). Al implementar esta porción del código llegaremos a un resultado equivalente al obtenido en el caso del archivo de texto, pero el código es más entendible. Además podemos abrir el archivo generado en un editor de hojas de cálculo y verlo en el formato tabular, lo cual nos facilita su interpretación.

Recuerda suscribirte para acceder al código fuente y al video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online
Conclusión
Muy bien en esta práctica hemos incluido elementos adicionales, como la descarga de archivos directamente desde la web así como un nuevo tipo de formato, el CSV, que como veremos en otros cursos es de uso muy extendido en Ciencia de Datos y Machine Learning.
Así que con esto cerramos esta primera parte del curso y estamos listos para iniciar la segunda sección, en donde abordaremos todo lo relacionado con la Programación Orientada a Objetos en Python.
Entonces en la próxima lección veremos una introducción a la Programación Orientada a Objetos y hablaremos de algunos conceptos y terminología básica.