ESET Latinoamrica | info@eset-la.com | www.eset-la.com
Contenido Manejo de archivos ............................................................................................................................................................................. 3 Qu es un archivo? ............................................................................................................................................................................. 3 Escribir en archivos ........................................................................................................................................................................... 3 Leer de archivos ................................................................................................................................................................................ 4 Leyendo la configuracin desde un archivo ..................................................................................................................................... 5 Conectando a la base de datos ............................................................................................................................................................. 6 Conexin a la base de datos ............................................................................................................................................................. 6 Accediendo a recursos web .................................................................................................................................................................. 7 Conclusin ............................................................................................................................................................................................ 7
Introduccin a Python Mdulo IV 3
Introduccin Saber cmo utilizar archivos es un punto muy importante para cualquier programador. Aprender a manipular archivos de texto, conexiones a bases de datos, acceso a pginas web nos permite interactuar con otros sistemas, almacenar nuestra informacin para utilizarla en otro momento y utilizar datos persistentes cuando sea necesario.
Es por ello que en el presente mdulo haremos una introduccin a la escritura y lectura desde archivos en Python. Adems veremos cmo conectarnos a una base de datos para hacer consultas y utilizar la informacin que en ella existe. Manejo de archivos
Leer y escribir Archivos, conectarnos a una base de datos para consultar o insertar informacin o saber de qu manera leer informacin ajena a nuestro cdigo es muy importante para programar. Si en algn momento queremos guardar algn valor, dato, o informacin para tenerla accesible la prxima vez que ejecutemos nuestro programa, necesitamos saber cmo almacenarla de forma correcta.
Podemos utilizar los archivos de texto para cargar informacin en nuestro programa, para crear un registro de errores o lo que va haciendo o incluso como un archivo de configuracin. Al momento de conectarnos a una base de datos, podemos agregar informacin, consultar por datos o actualizar.
Qu es un archivo? Un archivo es una secuencia de bytes que se aloja en el disco rgido para almacenar informacin, datos, imgenes incluyendo tambin archivos ejecutables. Todo lo que se guarda en las computadoras son archivos, y de los formatos ms diferentes que se puedan imaginar. Pero qu es lo que pasa cuando estamos escribiendo un programa y necesitamos cargar informacin que se encuentra en el disco, cmo accedemos a esos datos?
Siempre que queramos leer o escribir en un archivo vamos a tener que decirle a nuestro programa dnde est ese recurso y de qu manera lo tenemos que abrir. Abrir un archivo en Python es mucho ms sencillo de lo que ustedes se imaginan, solo debemos utilizar la funcin open(), pasarle los parmetros correspondientes a la ruta o nombre del archivo y el modo con el que lo queremos abrir.
Para ver el detalle de cmo llamar a la funcin open() abran una consola de Python e ingresen help(open), podrn ver cmo pasar los parmetros a la funcin. En caso de que quieran un poco ms de detalle sobre los modos de apertura de un archivo pueden ingresar en la misma consola el comando file.__doc__ para que muestre por pantalla todo el detalle de los tres tipos de apertura de un archivo:
r: Abre el archivo en modo lectura (read) para poder leer su contenido. w: Abre el archivo en modo escritura (write), para poder escribir en l. a: Abre el archivo en modo de agregacin (append), para continuar agregando contenido hacia el final del mismo Adems existe una opcin para abrir los archivos en modo binario (b), y les queda a ustedes como tarea ver qu diferencia tiene esta opcin con las anteriores. Escribir en archivos
Cuando desde nuestro programa, queramos escribir un archivo en el disco de la computadora debemos invocar a la funcin open() y pasarle como parmetro del modo de apertura la opcin de escritura (w). Por ejemplo, podemos crear un archivo que se llame nmeros.txt y escribir en l los nmeros del 1 al 100:
Introduccin a Python Mdulo IV 4
Imagen 1 - Escribiendo en un archivo de texto Primero utilizamos la funcin open(), con sus correspondientes parmetros para abrir el archivo, luego mediante un for, recorremos los nmeros del 1 al 100 y escribimos el nmero en el archivo utilizando la funcin write(). Finalmente, una vez que salimos del bucle, cerramos el archivo llamando a la funcin close(). Siempre que se abra un archivo, debemos cerrarlo para evitar perder informacin.
Cmo creen que se podra hacer para modificar el archivo y agregarle los nmeros del 101 al 200? Leer de archivos Ahora que ya hablamos acerca de cmo escribir en archivos, tenemos que ir al otro extremo de la cuestin. Cuando guardamos informacin en el disco de la computadora, es porque en algn momento vamos a intentar acceder a ella. Para hacerlo, tenemos que saber cmo abrir un archivo para lectura y acceder a su contenido.
Para leer un archivo en Python, debemos abrirlo con el modo de lectura (r) y luego podremos utilizar las funciones read(), readline() o readlines().
Como se podrn imaginar, existen algunas diferencias entre las tres funciones que enumeramos antes para leer un archivo. La funcin read() lee, por defecto todo el archivo hasta alcanzar el EOF (End Of File), en caso de que sea necesario se le puede pasar el tamao de bytes mximo a leer.
La segunda funcin que mencioamos, readline(), lee una linea completa del archivo. A esta funcin se le puede pasar como parmetro la cantidad de bytes a leer, si es menor a la longuitud de la lenea solo nos traer esos bytes. Finalmente, readlines(), lee las lineas del archivo y nos devuelve un array con todas las linas. Por ejemplo, el siguiente cdigo lee un archivo de texto utilizando la funcin readlines() e imprime sus lneas por pantalla, avanzando de una a la vez y eliminando el carcter especial de nueva lnea\n:
Imagen 2 - Leer desde un archivo de texto Introduccin a Python Mdulo IV 5
Con estas tres funciones, cualquiera que se ajuste al caso o la necesidad que tengamos podemos ir leyendo el archivo. Si en algn momento llegamos a necesitar posicionarnos el algn lugar del archivo, podemos utilizar la funcin seek(), averiguen cmo se utiliza. Leyendo la configuracin desde un archivo
Adems de las funciones para leer y escribir en archivos, existen algunos mdulos de Python que nos ayudan para determinadas funciones. Si se llegaran a encontrar con la necesidad de leer informacin desde un archivo de configuracin, el mdulo de ConfigParser que incluye Python facilita mucho esta tarea.
Para darles un ejemplo, pueden observar el siguiente archivo de configuracin que usaremos a modo de ejemplo:
En ese archivo se especifican los parmetros de conexin a una base de datos, en donde se guardan los datos. Las secciones se separan entre [ ] y los parmetros y valores se separan con un =. Este archivo tiene dos secciones y en el siguiente script veremos cmo hacer para leer la informacin:
Imagen 3 - Archivo de configuracin
Para leer los datos de la configuracin de ejemplo utilizaremos un pequeo programita que cargar valores especficos del archivo para luego imprimirlos por pantalla:
Introduccin a Python Mdulo IV 6
Imagen 4 - Leyendo un archivo de configuracin El script carga_configuracion.py leer el arcihvo para luego imprimir por la pantalla los valores. En un sistema real, esto permitira almacenar los datos fuera de nuestro cdigo para que llegado el caso de tener que modificarlos, no sea necesario cambiar el cdigo.
Conectando a la base de datos En la seccin anterior, cuando hablamos acerca de cmo leer un archivo de configuracin, presentamos un caso de ejemplo en el que se lea desde un archivo los datos para establecer una conexin con una base de datos. Ahora, nos vamos a ocupar de lograr esa conexin a una base de datos y realizar consultas.
Actualmente existen un gran nmero diferentes de bases de datos. Qu es una base de datos? Una base de datos es una coleccin de datos que tienen un contexto en comn y se almacenan para ser utilizados cuando sea necesario.
Para el desarrollo del curso, vamos a estar utilizando MySQL, para mostrar como conectarnos a una base de datos y algunas maneras sencillas de insertar nuevos valores, o realizar consultas. Para aquellos que se decidan por probar los scripts que utilizaremos durante estas partes del curso. Les queda como tarea del hogar el descargar e instalar el software de MySQL para tener acceso a l. Adems, este no es el nico desafo sino que tambin hay que instalar las libreras necesarias de Python para conectarse, en otras palabras tienen que instalar MySQLdb 1 .
Una vez que tengan acceso a la base de datos, y recopilen la informacin, podrn probar los scrtips de esta seccin.
Conexin a la base de datos
A continuacin se muestra un script que nos permite conectarnos a una base de datos de MySQL en el servidor local. El usuario se llama python, y se autentica con el password programando a la base curso_python:
1 Segn su plataforma el software puede variar: http://stackoverflow.com/questions/372885/how-do-i-connect-to-a-mysql- database-in-python Introduccin a Python Mdulo IV 7
Imagen 5 - Conexin a la base de datos El script es bastante claro. Primero creamos la variable bd que representa la conexin a la base de datos y con la cual vamos a poder interactuar. Luego creamos un cursor, para poder ejecutar consultas a la base. Luego nos traemos todos los registros de la base TU_TABLA . Finalmente, imprimimos todas las columas por la pantalla.
Es recomendable tomarse un tiempo para armar y practicar qu otras instrucciones se pueden ejecutar, como as tambin entender qu hacen los mtodos execute() y fetchall().
Al tener una conexin a una base de datos podemos insertar, consultar o modificar los valores y parmetros de la base de datos, obvoi que para lograr todo esto hace falta un poco de tiempo, prctica y dedicacin.
Accediendo a recursos web Otro recurso que puede ser de inters para muchos de nosotros son las pginas web. No vamos a hablar acerca de desarrollo de sitios web y cosas por el estilo. Sin embargo, es importante que entendamos algunas maneras bsicas de interactuar con sitios web, descargarlos y ver su contenido.
Para este cometido existen libreras que ya vienen incluidas en Python y otras que se pueden instalar como BeautifulSoap 2 , u otros frameworks de Python para interactuar con sitios web. El mdulo que vamos a necesitar para interactuar con una pgina web es urllib2.
Conclusin
A lo largo del presente mdulo hemos repasado de qu manera interactuar con archivos de texto, vimos cmo utilizar funciones bsicas para interactuar con archivos de configuracin y bases de datos. Es una realidad que estamos hablando de la punta del iceberg y que existe mucho camino por recorrer. Un lenguaje de programacin tan completo y extenso como es Python lleva tiempo de aprender y existe un nmero de libreras para las ms remotas funcionalidades.
Python cuenta con libreras para debuggers, herramientas de pentesting, fuzzers y muchas cosas ms. Si bien no las vamos a ver en detalle en este curso las vamos a mencionar ms adelante en oros mdulos. Ahora lo importante es practicar, leer de archivos e ingresarlo en una base de datos, leer de la base de datos y escribir los datos en un archivo.