Dungeon of Bits
Aprendiendo informática.
Dungeon of Bits

Uso de ficheros con Python

En este tutorial vamos a utilizar Python para manipular ficheros.

Python

Requisitos:

Para esta práctica utilizaremos la versión Community del framework de Python Pycharm, el cual podéis instalar desde su web.

Usaremos un equipo con Ubuntu 22.04 LTS y Python3.10, pero servirá cualquier equipo con Python 3.

Proyecto de Pycharm:

Una de las ventajas de Pycharm es que ya crea entorno virtual para nuestros proyectos, crearemos un proyecto nuevo y asignaremos el intérprete Python3 que tengamos instalado.

Python

Uso de ficheros desde Python:

En Python podemos acceder a los ficheros con la función open(), la cual tiene dos parámetros:

  • Nombre de fichero.
  • Modo de apertura.

Los métodos de apertura de ficheros son:

  • r: Read, valor por defecto, abre el fichero para lectura, lanza un error si el fichero no existe.
  • a: Append, abre el fichero para añadir datos, crea el fichero indicado si no existe.
  • w: Write, abre el fichero para escribir datos, crea el fichero indicado si no existe.
  • x: Create,crea el fichero indicado si no existe, en caso de que exista el fichero lanza un error.

Además se puede especificar como son los datos dentro del fichero con dos letras más combinables con las anteriores:

  • t: Text, valor por defecto, los datos del fichero son de texto.
  • b: Binary, los datos del fichero son binarios.

Ejemplo:

  • Abrir un fichero para lectura, las dos sentencias son equivalentes:
fichero = open("FicheroDatos.txt")
fichero = open("FicheroDatos.txt","rt")

Ruta de fichero:

En el parámetro de nombre de fichero de open() se puede especificar la ruta del fichero a manipular, por ejemplo si queremos abrir un fichero que está en /home/usuario2/Descargas y se llama horario.txt usaremos el comando:

fichero = open("/home/usuario2/Descargas/horario.txt")

Crear un fichero con Python:

Como hemos visto tenemos varias opciones para crear un nuevo fichero usando Python.

Vamos a crear tres ficheros nuevos utilizando las diferentes opciones, los ficheros se llamarán datos1.txt, datos2.txt y datos3.txt.

fichero = open("datos1.txt","x")
fichero = open("datos2.txt","a")
fichero = open("datos3.txt","w")

Estas tres maneras han funcionado porque no existían ficheros con estos nombres en nuestro proyecto.

Si los ficheros existiesen, el método w (write) borraría los datos anteriores, mientras que el método a (append) abriría el fichero para añadir información al final del mismo.

En la imagen se puede ver cómo se han creado los tres ficheros en el directorio de nuestro proyecto.

Python

Escribir en un fichero con Python:

Para escribir en un fichero tenemos dos maneras de hacerlo, sobrescribiendo los datos con w (write) o añadiendo datos al final del mismo con a (append).

Escribir texto:

En el siguiente ejemplo vamos a crear un fichero llamado "FicheroDatos.txt" y escribiremos una línea de texto, la cual mostraremos por pantalla.

#Creamos el fichero FicheroDatos si no existe.
fichero = open("FicheroDatos.txt","w")
#Escribimos una frase.
fichero.write("Datos importantes.\n")
#Cerramos el fichero.
fichero.close()
#Abrimos el fichero para leer los datos.
fichero = open("FicheroDatos.txt","r")
#Imprimimos por pantalla el contenido del fichero.
print(fichero.read())

\n Indica un cambio de línea al final de la línea de texto.

RESULTADO:

Datos importantes.

Añadir texto:

En el siguiente ejemplo vamos a añadir una segunda línea de texto en el fichero "FicheroDatos.txt" .

#Abrimos el fichero FicheroDatos para añadir texto
fichero = open("FicheroDatos.txt","a")
#Escribimos una frase.
fichero.write("Más datos importantes.\n")
#Cerramos el fichero.
fichero.close()
#Abrimos el fichero para leer los datos.
fichero = open("FicheroDatos.txt","r")
#Imprimimos por pantalla el contenido del fichero.
print(fichero.read())

RESULTADO:

Datos importantes.

Más datos importantes.

Sobrescribir texto:

Si utilizamos el método write para volver a abrir el fichero "FicheroDatos.txt" de nuevo borraríamos todos el texto del fichero:

#Abrimos el fichero FicheroDatos en modo escritura
fichero = open("FicheroDatos.txt","w")
#Escribimos una frase.
fichero.write("Datos.\n")
#Cerramos el fichero.
fichero.close()
#Abrimos el fichero para leer los datos.
fichero = open("FicheroDatos.txt","r")
#Imprimimos por pantalla el contenido del fichero.
print(fichero.read())

RESULTADO:

Datos.

Leer de un fichero con Python:

Leer el fichero entero:

Vamos a utilizar el fichero "FicheroDatos.txt" que contiene la siguiente información:

Python

Primero mostraremos por pantalla el texto que contiene el fichero:

fichero = open("FicheroDatos.txt","r")
print(fichero.read())

RESULTADO:

Línea 1.

Línea 2.

Línea 3.

Línea 4.

Línea 5.

Leer parte del fichero:

Si solamente se quieren mostrar unos caracteres del fichero de texto se puede indicar en la función read.

En el siguiente ejemplo solo se imprimirán los ocho primeros caracteres del fichero:

fichero = open("FicheroDatos.txt","r")
print(fichero.read(8))

RESULTADO:

Línea 1.

Leer líneas del fichero:

Podemos leer el fichero, línea a línea utilizando la función readline().

Por ejemplo vamos a hacer un programa que lea las dos primeras líneas del fichero:

fichero = open("FicheroDatos.txt","r")
print(fichero.readline())
print(fichero.readline())

RESULTADO:

Línea 1.

Línea 2.

También se puede hacer un programa que lea todas las líneas del fichero y las imprima:

fichero = open("FicheroDatos.txt","r")
for l in fichero:
  print(l)

RESULTADO:

Línea 1.

Línea 2.

Línea 3.

Línea 4.

Línea 5.

Cerrar el acceso al fichero:

Cuando programemos es una buena práctica cerrar el acceso al fichero de trabajo cuando acabemos de utilizarlo.

Para eso usamos la función close(), por ejemplo:

fichero = open("FicheroDatos.txt","r")
print(fichero.readline())
fichero.close()

Eliminar un fichero con Python:

Para borrar un fichero podemos utilizar el módulo OS, el cual debemos importar.

Para borrar el fichero "FicheroDatos.txt" por ejemplo usaríamos este programa:

import os

os.remove("FicheroDatos.txt")

Si el fichero no existe se lanzará una excepción FileNotFoundError.

El siguiente programa comprueba si existe un fichero y, si es así, lo borra, pero si el fichero no existe avisa al usuario:

import os

fichero = "FicheroDatos.txt"
if os.path.exists(fichero):
  os.remove(fichero)
else:
  print("No existe el fichero {}.".format(fichero))

Crear y borrar directorios con Python:

También podemos crear y borrar directorios con Python utilizando el módulo OS.

La documentación del módulo OS está aquí.

Crear directorio:

El siguiente programa crea un directorio llamado prueba en el directorio del proyecto:

import os

directorio = "prueba"
os.mkdir(directorio)

El programa lanzará la excepción FileExistsError si ya existe un directorio con esa ruta y nombre.

Eliminar directorio:

El siguiente programa elimina un directorio llamado prueba en el directorio del proyecto:

import os

directorio = "prueba"
os.rmdir(directorio)

El programa lanzará la excepción FileNotFoundError si no existe un directorio con esa ruta y nombre.