Tabla de Contenidos
Python: Ficheros
Leer ficheros
Texto normal
Leerlo completamente, almacenarlo en memoria y mostrarlo por pantalla:
fname = 'fichero.txt' f = open(fname, 'r') contenido = f.read() f.close() print(contenido)
Una alternativa más limpia es usando with:
fname = 'fichero.txt' with open(fname, 'r') as f: contenido = f.read() print(contenido )
Para leer un fichero y almacenar sus líneas:
fname = 'fichero.txt' with open(fname, 'r') as f: contenido = f.readlines() print(contenido)
El contenido se cargará como una lista de líneas. Lo que delimita una línea es el carácter fin de línea (\n)
Para leer un fichero línea a línea (útil si es demasiado grande para guardar en memoria):
fname = 'fichero.txt' with open(fname, 'r') as f: for linea in f: print(linea)
También podemos usar enumerate():
fname = 'fichero.txt' with open(fname, 'r') as f: for i, linea in enumerate(f): print("Línea {}: {}".format(i, linea .strip()))
Ficheros CSV
Si el fichero contiene una línea con la cabecera (título de los campos):
import csv fname = 'data.csv' with open(fname, 'r') as f: data_reader = csv.reader(f, delimiter=',') headers = next(data_reader) print("Headers = {}".format(headers)) for line in data_reader: print(line)
Cada línea Python la representará como una lista.
Si el fichero no tiene cabecera:
fname = 'data_no_header.csv' with open(fname, 'r') as f: data_reader = csv.reader(f, delimiter=',') for line in data_reader: print(line)
Ficheros JSON
JavaScript Object Notation. Formato muy utilizado en la serialización de los datos y la comunicación entre servicios.
Ejemplo de fichero JSON:
{ "titulo": "El club de la lucha", "vista" : true, "año": 1999, "actores": [ "Brad Pitt", "Edward Norton", "Helena Bonham Carter" ] }
Lectura de fichero JSON en Python:
import json fname = 'movie.json' with open(fname, 'r') as f: content = f.read() movie = json.loads(content) movie # "movie" es ahora un objeto Python de clase diccionario.
Una alternativa más simple:
import json fname = 'movie.json' with open(fname, 'r') as f: movie = json.load(f) movie
Si queremos mostrar un elemento JSON de forma agradable por pantalla:
print(json.dumps(movie, indent=4))
