====== 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))