Cuando trabajas con Python no es necesario importar librerías o un gran conocimiento en programación para la lectura, escritura y tratamiento de ficheros. Python soporta este tipo de acciones con ficheros de forma nativa, simple y de fácil comprensión.
El primer paso, antes de entrar en artículos de creación, modificación y borrado de ficheros, es aprender a leer el contenido de un fichero y almacenarlo temporalmente en variables de nuestro código en Python.
1. Lectura de ficheros con Python
1.1 Introducción
La función ‘open‘ nos permitirá abrir ficheros y leer su contenido, el contenido devuelto por la función ‘open‘ no es una simple cadena de texto si no un tipo de dato algo más complejo denominado ‘objeto de tipo fichero‘. Un objeto de tipo fichero por supuesto almacenará el contenido del propio fichero, no obstante, también pondrá a nuestra disposición otros atributos del fichero como el nombre y modo en que se ha abierto (solo lectura, editable,…). La información contenida en el ‘objeto de tipo fichero‘ nos será de gran utilidad y en ciertos casos incluso podremos modificarla para por ejemplo copiar y renombrar ficheros.
Es muy importante saber que existen dos tipos de ficheros y la diferencia entre ambos:
- Ficheros de texto:
- Estructurados como una secuencia de líneas donde cada línea almacena una secuencia de caracteres.
- Es delimitado el fin de una línea con un carácter especial denominado EOL (End Of Line).
Nota: En resumen, para que nos entendamos todos, al leer un fichero de tipo texto obtendremos todas las líneas del fichero a la vez y sabremos donde termina una y empieza otra a través de un carácter especial como la coma simple o el salto de línea.
Este es el contenido de la primera línea,
Este es el contenido de la segunda línea y se separa de la primera con la última coma,
- Ficheros binarios: Un fichero binario es cualquier tipo de fichero que no es de texto (imágenes, audio,…), poseen una estructura distinta a los de texto y podrán ser procesados únicamente por aplicaciones que conozcan la estructura del archivo. Si intentamos abrir un fichero binario como texto lo único que veremos será un batiburrillo de caracteres incomprensible a simple vista.
1.2 Abrir ficheros < función open ( ) >
Para usar esta función debemos informar dos argumentos:
- Nombre del fichero: Nombre del archivo de texto que deseamos abrir incluyendo ruta completa en caso de no encontrarse en la misma carpeta donde ejecutamos nuestro programa en Python.
- Modo: Este argumento es opcional, no obstante, es recomendable su uso. Este argumento nos servirá para abrir archivos de las siguiente formas o modos:
- ‘r‘ : Modo solo lectura. Al abrir un archivo en solo lectura protegeremos su contenido y por tanto no podremos guardar cambios o modificaciones. Si no declaramos ningún modo este será el que se aplique por defecto.
- ‘w‘ : Modo escritura. Al abrir en modo escritura será creado un nuevo fichero sobre el que podremos modificar el contenido y guardar los cambios, no obstante, será borrado cualquier fichero que tenga el mismo nombre y reemplazado por nuestro nuevo archivo.
- ‘a‘ : Modo añadir o agregar. Este modo abrirá archivos y agregará el contenido que deseemos al final del mismo, este modo es muy usado para añadir continuamente nueva información a ficheros ya existentes.
- ‘r+‘ : Modo especial lectura/escritura: Este modo combina los dos primeros permitiendo leer contenido existente y escribir nuevo contenido.
1.3 Leer ficheros < función read() >
Una vez abierto el fichero y almacenado el objeto de tipo fichero podemos continuar con la lectura del texto que este contiene, recordad que un objeto de tipo fichero no solo contiene el texto en si, también contiene otros atributos y para obtener el contenido del texto deberemos aislarlo en otra variable a parte. Para leer el texto deberemos usar la función ‘read()‘ sobre el objecto de tipo fichero.
Los siguientes casos serían los más sencillos y los que usaremos en la gran mayoría de los códigos en nuestros manuales.
- Si deseamos leer todo el contenido:
ObjFichero = open(«NombreFichero.txt»)
Objfichero.read()
ObjFichero.close()
- Si deseamos leer únicamente los cinco primeros caracteres del texto:
ObjFichero = open(«NombreFichero.txt»)
Objfichero.read(5)
ObjFichero.close()
Nota: Tras la lectura de un fichero es recomendable el uso de la función ‘close()‘ para la liberación del objeto de tipo fichero y la memoria en uso por el mismo.
1.4 Caso práctico
Para nuestro caso práctico sean de más fácil comprensión prepararemos el entorno del siguiente modo:
- Crearemos la siguiente carpeta ‘Ejemplos‘ con los siguientes comandos en la consola de nuestra Raspberry Pi:
cd /home/pi
mkdir Ejemplos
- Crearemos un fichero llamado ‘Ejemplo1.txt‘ donde introduciremos nuestro nombre y apellidos. Recomendamos usar el siguiente ejemplo:
echo «Nombre Apellido1 Apellido2» >> Ejemplo.txt
- Comprobaremos el contenido del fichero ‘Ejemplo1.txt‘ usando en la consola el siguiente comando:
more Ejemplo1.txt
- Usaremos, como es costumbre en este blog, Python 3 (IDLE) en nuestra Raspberry Pi y crearemos un nuevo fichero con nuestro código llamado ‘Ejemplo1.py‘.
Nota: Recordad que en nuestros manuales siempre trabajamos con Python 3 para seguir una versión concreta. Las diferencias entre Python 2 y 3 son salvables pero en muchas ocasiones unas simples comillas o paréntesis de más funcionan en uno y en otro no.
- Ejemplo 1: Leeremos el contenido de nuestro fichero en modo solo lectura e imprimemos por pantalla el contenido, para esto crearemos un fichero llamado ‘Ejemplo1.py‘, introduciremos el código mostrado a continuación y ejecutaremos dicho fichero como hemos mostrado en manuales anteriores. Recordad que si no definimos modo por defecto se aplicará el modo lectura ‘r‘.
ObjFichero = open(“home/pi/Ejemplo1.txt”)
TextoFichero = ObjFichero.read()
print (TextoFichero)
ObjFichero.close()
- Ejemplo 2: Nos basaremos en el mismo ejemplo pero en esta ocasión únicamente extraeremos los diez primeros caracteres o letras y añadiremos al texto que mostraremos por pantalla el texto «Hola».
ObjFichero = open(“home/pi/Ejemplo1.txt”)
TextoFichero = ObjFichero.read(10)
print («Hola » + TextoFichero)
ObjFichero.close()
Nota: Para ejecutar nuestro código recomendamos abrir el shell de Python, crear nuestro fichero y ejecutar el contenido con F5 o desde el menú «Run > Run Module«.
Con estos ejemplos concluimos nuestro manual de lectura de ficheros con Python, esperamos que os haya gustado y veros pronto 😀