La lectura de archivos de texto en Python es una tarea común en el procesamiento de datos y la manipulación de archivos. Python proporciona varias formas de leer archivos de texto, lo que nos permite acceder y utilizar la información contenida en ellos. Aquí tienes una descripción detallada de cómo leer archivos de texto en Python:
open(). El modo de apertura debe establecerse como "r" o "rt" para archivos de texto.file = open("archivo.txt", "r")
read(). Este método devuelve una cadena que contiene todo el contenido del archivo.content = file.read() print(content)
readline(). Este método lee una línea a la vez y mueve el indicador de posición del archivo a la siguiente línea.line = file.readline() while line: print(line) line = file.readline()
readlines(). Este método devuelve una lista donde cada elemento es una línea del archivo.lines = file.readlines() for line in lines: print(line)
close(). Esto libera los recursos asociados al archivo y garantiza que no se produzcan conflictos de acceso en futuras operaciones.file.close()
Es importante tener en cuenta que la apertura y el cierre del archivo son operaciones necesarias para asegurar una manipulación adecuada de los archivos y evitar problemas de acceso o pérdida de datos.
Además, es una buena práctica utilizar bloques try-finally o with al leer archivos de texto. Estos bloques garantizan que el archivo se cierre correctamente, incluso si se produce una excepción durante el proceso de lectura.
try: file = open("archivo.txt", "r") # Realizar operaciones de lectura finally: file.close()
O utilizando el bloque with:
with open("archivo.txt", "r") as file: # Realizar operaciones de lectura
Leer CSV
Además de leer archivos de texto en Python, también es común necesitar leer archivos CSV (Comma-Separated Values). Los archivos CSV contienen datos estructurados separados por comas, lo que los convierte en una forma popular de almacenar y compartir conjuntos de datos. Aquí te dejamos la forma de cómo leer archivos CSV en Python:
csv, que proporciona funciones y clases específicas para trabajar con este tipo de archivos.import csv
open(). Es importante especificar el modo de apertura como "r" o "rt" para archivos de texto.with open('archivo.csv', 'r') as file: # Realizar operaciones de lectura del archivo CSV
reader() del módulo csv. Este objeto nos permitirá acceder a los datos fila por fila.with open('archivo.csv', 'r') as file: csv_reader = csv.reader(file) # Realizar operaciones de lectura del archivo CSV
for. Cada fila se representa como una lista de valores correspondientes a cada columna del archivo CSV.with open('archivo.csv', 'r') as file: csv_reader = csv.reader(file) for row in csv_reader: # Acceder a los valores de cada columna en la fila print(row)
DictReader(). Esto nos permite acceder a los valores utilizando los nombres de las columnas como claves.with open('archivo.csv', 'r') as file: csv_reader = csv.DictReader(file) for row in csv_reader: # Acceder a los valores utilizando los nombres de las columnas print(row['columna1'], row['columna2'])
Es importante tener en cuenta que los archivos CSV pueden tener diferentes delimitadores, como comas, punto y coma o tabulaciones. Si el archivo CSV utiliza un delimitador distinto de la coma, podemos especificarlo al crear el objeto lector CSV utilizando el parámetro delimiter.
Todo esto y más lo puedes aprender en el Curso de Python: Comprehensions, Funciones y Manejo de Errores
Diego Alessandro Galvez Rodriguez
EstudianteNicolas Alpargatero
EstudianteJulio Cardenas
EstudianteWaldir Zapata Garcia
EstudianteJhon Freddy Tavera Blandon
EstudianteWaldir Zapata Garcia
EstudianteTe recomiendo ver esta clase de David Aroesti para complementar. Clase 32: Crud con Python El curso completo recomendadísimo, solo si ya has hecho estos cursos:
Tienes razón para mi de los mejores cursos.
Aqui dejo un ejercicio que hice para recordar el manejo de archivos csv.
#creando manualmente un csv archivo = open('archivo_csv.csv', 'w') encabezado='"id", "nombre", "edad", "direccion"' archivo.write(encabezado + '\n') for i in range(100): archivo.write('{},"usuario{}",{},"calle {}, carrera {}"\n'.format(i, i, 30 + (i % 10), 100 + i, 200 - i)) archivo.close()
el archivo queda de esta manera:
94,"usuario94",34,"calle 194, carrera 106" 95,"usuario95",35,"calle 195, carrera 105" 96,"usuario96",36,"calle 196, carrera 104" 97,"usuario97",37,"calle 197, carrera 103"
Ahora lo leemos se importa el modulo csv
import csv archivo = open('archivo_csv.csv', 'r') csv_reader = csv.reader(archivo) for fila in csv_reader: print(fila) archivo.close()
La funcion csv.reader devuelve una coleccion cuyos miembros son listas y todos los campos del archivo son tratados como strings.
['id', ' "nombre"', ' "edad"', ' "direccion"'] ['0', 'usuario0', '30', 'calle 100, carrera 200'] ['1', 'usuario1', '31', 'calle 101, carrera 199'] ['2', 'usuario2', '32', 'calle 102, carrera 198'] ['3', 'usuario3', '33', 'calle 103, carrera 197'] ['4', 'usuario4', '34', 'calle 104, carrera 196']
Ahora queremos obtener una lista de diccionarios. Aqui es clave la primera linea del archivo csv.
archivo = open('archivo_csv.csv', 'r') csv_dict_reader = csv.DictReader(archivo) lista_diccionarios = list(csv_dict_reader) for i in range(10,20): print(lista_diccionarios[i]) archivo.close()
La funcion csv.DictReader devuelve una coleccion cuyos miembros son diccionarios. Los keys son sacados de la primera linea del archivo csv y los values son sacados como strings de las lineas 2 en adelante del archivo csv.
{'id': '12', ' "nombre"': 'usuario12', ' "edad"': '32', ' "direccion"': 'calle 112, carrera 188'} {'id': '13', ' "nombre"': 'usuario13', ' "edad"': '33', ' "direccion"': 'calle 113, carrera 187'} {'id': '14', ' "nombre"': 'usuario14', ' "edad"': '34', ' "direccion"': 'calle 114, carrera 186'} {'id': '15', ' "nombre"': 'usuario15', ' "edad"': '35', ' "direccion"': 'calle 115, carrera 185'} {'id': '16', ' "nombre"': 'usuario16', ' "edad"': '36', ' "direccion"': 'calle 116, carrera 184'} {'id': '17', ' "nombre"': 'usuario17', ' "edad"': '37', ' "direccion"': 'calle 117, carrera 183'}
Resumen:
open => Abrir open("lista_compras.txt", mode="r") Se puede omitir el mode= Hay modos de apertura como: "w" de "write" que significa escribir. "a" de appending que significa añadir o anexar (al final). "b" para guardar objetos
read => Leer
readLine => Leer linea
readLines => Leer lineas
close => cerrar
with => Con
Datos.csv
Nombre,Edad,Profesión Juan,30,Ingeniero María,25,Médico Carlos,28,Abogado
import csv def read_csv_file(filename): try: with open(filename, 'r') as file: reader = csv.reader(file) data = list(reader) return data except FileNotFoundError: return "El archivo no existe." except IOError: return "Error al leer el archivo." # Nombre del archivo CSV que queremos leer archivo = "datos.csv" # Llamamos a la función para leer el archivo CSV contenido = read_csv_file(archivo) # Mostramos el contenido del archivo CSV for row in contenido: print(row)
Resultado de la ejecución del programa:
['Nombre', 'Edad', 'Profesión'] ['Juan', '30', 'Ingeniero'] ['María', '25', 'Médico'] ['Carlos', '28', 'Abogado']
usando pickles y archivos de texto
import pickle import sys try: file = open("archivo.txt", "w", encoding="utf-8") file.write("Imprimiendo cuadrado de números\n") lstnumbers = [9,2,3,4,7] file.write(str(lstnumbers)) with open("archivo.txt", "wb") as tfile: pickle.dump(lstnumbers,tfile) with open ('archivo.txt', 'rb') as tempfile: items = pickle.load(tempfile) lstsquare=[] for element in lstnumbers: file.write(f"\nnúmero: {element}, su cuadro es {element**2}") lstsquare.append(element**2) file.write("\n") file.write(str(lstsquare)) print("Leyendo desde un archivo plano..\n") file = open('archivo.txt', 'r', encoding="utf-8") print(file.readline()) print(file.readline()) file.close() file = open('archivo.txt', 'r', encoding="utf-8") #lee todo el archivo plano print(file.read()) finally: file.close() #content = file.read() #print(content)