Creación y acceso a archivos
Hasta este momento todo lo que hemos podido hacer desde Python ha sido efímero, perdiéndose los resultados por carecer de medios para almacenarlos. Tampoco hemos podido acceder a datos externos, salvo los que introduce el usuario mediante la función input(). Para evitar esto y aumentar la funcionalidad de nuestros primeros script (1) necesitamos escribir y leer archivos e los que se almacenen datos. Iniciamos en esta entrada una subsección donde trataremos sobre estas cuestiones de tanta importancia para nuestra creación de script en Python.
La forma básica por la que podemos empezar a trabajar es con la creación y manejo de archivos (documentos y/o registros de datos) en formato txt.
Dado que partimos de cero y necesitamos tener un espacio donde guardar los datos generados por nuestro script, empezaremos, pues, por aprender a crear este tipo de archivo. Para ello usaremos la función open() que cumple la doble función de crear (de no existir) o abrir (si ya existe) un archivo txt.
Esta función requiere determinados parámetros, viendo condicionado su funcionamiento en función cuáles sean y cómo se concreten. veámoslos en detalle, empezando por el primero: el que concreta la ubicación y el nombre o identificador del archivo.
archivo = open('texto1.text') podría ser la formulación más básica de este parámetro, indicando, en este caso, que el archivo txt se ubica en el mismo directorio en el que se encuentra el script.
Otro tanto conseguimos con la instrucción archivo = open('./texto1.text') que remite a la misma ubicación.
Esta segunda forma de expresión nos lleva a plantear la posibilidad de ubicar nuestro archivo (o a buscar su ubicación) en un subdirectorio dependiente de aquel en que se encuentra nuestro script (vg. archivo = open('textos/texto1.text'))
Y también ubicarlo en cualquier directorio usando una dirección absoluta (vg. archivo =open('C:/Users/NombreUsuario/Escritorio/texto1.txt') (2)
No obstante, tal y como están escrita esta instrucción en cualquiera de sus posibles formulaciones no funciona (devuelve error), ya que para ello precisa de un segundo parámetro. Además, este segundo parámetro condiciona el funcionamiento de la propia función y de lo que se puede hacer desde el script con el archivo txt.
Me refiero a una serie de comandos, que explico a continuación. Dichos comandos son cuatro, dos para especificar el tipo de fichero (texto o binario) y uno complementario que comprende los dos modos principales de trabajo: la lectura y la escritura de los archivos.
- "r" (read) es la opción que utiliza Python por defecto (si no se especifica nada) y nos permite abrir un fichero para lectura, pero da error si este fichero no existe. Por ello, en el caso en que nos encontramos ahora (creando el archivo txt) no sería adecuado, ya que sabemos de antemano que el fichero existe.
- "w" (write) abre un fichero para escritura borrando (3) la información que pudiera contener. Si el fichero no existe, lo crea, por lo que es útil para crear nuevos archivos (como es el caso) y cuando trabajamos con archivos externos que interesa modificar sin acumular versiones diferentes del mismo.
- "x" (create) crea un fichero para escribir en él. Si el fichero ya existe devuelve error, por lo que, al contrario que con "r", necesitamos saber que el fichero no existe. Por ello también no sirve para nuestro propósito actual, ya que es útil para generar nuevos archivos externos en los que guardar la información generada por el script, siempre y cuando sea necesario crear nuevos ficheros en cada proceso.
- "a" (append) abre un fichero ya creado para escribir en él situando el cursor al final de su contenido, por lo que no se altera el contenido previo. Esto hace que sea útil cuando queremos añadir la información a la previamente guardada (incluyendo la generada por script diferentes al actual).
Los dos comandos relativos al tipo de contenido (texto o binario) son los siguientes:
- "b" (binary) abre el fichero en modo binario (valores 0-1 en lugar de texto plano); ficheros como fotografías, archivos ejecutables, ficheros de LO-Writer o MO-Word, por ejemplo.
- "t" (text-mode) abre el fichero en modo texto plano.
El tercer parámetro es opcional, pero la mayoría de las veces muy necesario. Me refiero a encoding (codificación), que indica qué tipo de codificación o juego de caracteres se va a usar en el archivo (5). La concreción más frecuente de este parámetro es como utf-8
En resumen, el proceso de creación de un archivo .txt, quedaría como sigue (por ejemplo): archivo = open('textos/texto1.txt','w', encoding='utf-8')
Una vez creado (y abierto) el archivo podremos realizar con él las acciones permitidas por el segundo parámetro que hayamos empleado en la función open(), lo que, en esencia, se reduce a escribir y leer (de diferentes formas) el contenido del archivo, temas estos de los que me ocuparé en próximas entradas.
En todo caso, dado que el archivo está abierto, una vez que hayamos realizado las acciones que precisemos, deberemos cerrarlo, evitando así que quede innecesariamente abierto, consumiendo recursos RAM del sistema. Para ello haremos uso de la función close(), que expresaremos como sigue:
archivo.close()
... siendo, como es, archivo la variable que contiene la identificación del documento.
NOTAS
(1) Y en buena lógica, empezar a pensar en crear algo de utilidad práctica. Por suerte, y aunque sea aun de forma muy limitada, no nos falta mucho para obtener resultados prácticos con Python.
(2) Donde tu nombre de usuario sustituye a NombreUsuario.
(3) En el momento de ejecutar la instrucción.
(4) Que también funciona como concreción del argumento.
(5) O, en su caso, a devolver del archivo.


No hay comentarios:
Publicar un comentario
Comenta esta entrada