Archivos .txt
Creación y acceso
Hasta este momento hemos usado Python para acceder a archivos estructurados, y aun nos queda trabajo en esa dirección, pero creo necesario tratar, antes de proseguir por ese camino, sobre el trabajo con Python con archivos de contenido no estructurado (creación y acceso), ya que es un conocimiento muy necesario para dar funcionalidad al trabajo con este lenguaje. De no ser así, mucha información que generemos con herramientas basadas en Python se perderán innecesariamente; pero es que, además, dejamos de aprender procedimientos fundamentales para el acceso a datos, objetivo último de esta sección del blog.
Es cierto que aun no contamos con procedimientos de almacenamiento de información no estructurada, aunque ésta es mayoritaria en nuestro campo de trabajo, como fundamental es aprender procedimientos para obtener datos de este tipo de fuentes. Pero antes debemos aprender el manejo básico de este tipo de documentos. De esto va esta entrada y las que siguen.
La forma básica en que se presentan los datos no estrucutrados es en formato .txt y para empezar necesaitamos aprender a crearlos. 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 por cómo se concreten estos.
En este ejemplo archivo = open('texto1.text') creamos o accedemos a un archivo .txt llamado "texto1" que se ubica en la raiz del directorio donde se encuentra el script Python. Otro tanto conseguimos con la instrucción archivo = open('./texto1.text') que remite a la misma ubicación.
Esta segunda 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')), así como ubicarlo en cualquier directorio usando una dirección absoluta (vg. archivo =open('C:/Users/NombreUsuario/Escritorio/texto1.txt').
No obstante, tal y como está escrita esta instrucción en cualquiera de sus posibles formulaciones no funciona (devuelve error), ya que precisa de un segundo parámetro que, además, 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 cuatro comandos, más otros dos para determinar 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). 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 la información que pudiera contener. Si el fichero no existe, lo crea, por lo que es útil para crear nuevos archivos 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. También 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 un script diferente al que creó el archivo original.
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.
Finalmente el signo "+" abre el archivo en modo lectura y escritura simultáneamente.
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. La concreción más frecuente de este parámetro es como utf-8
La creación del archivo .txt queda así: 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 se concreta como escritura y/o lectura del 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 archivo asociada al archivo.
En la actualidad contamos con una expresión que permite acceder a un archivo y cerrarlo de forma automática sin necesidad de hacerlo expresamente. Me refiero a with open().
with open("archivo.txt", "r") as archivo:
contenido = archivo.read()
print(contenido)
No hay comentarios:
Publicar un comentario
Comenta esta entrada