Leyendo y Escribiendo archivos
Para leer o escribir archivos en python tenemos que abrir archivos en diferentes modos según la acción que queramos (lectura, escritura…)
Para abrir archivos utilizamos el método open()
El método open()
devuelve un file object
(llamado file handle) que dependerá del modo utilizado para abrir el archivo
-
Cuando abrimos un archivo en modo texto (
w
,r
,wt
,rt
, etc…) devuelve una instancia de una subclase deio.TextIOBase
(clase base para streams de texto). -
Cuando abrimos un archivo en modo binario devuelve una instancia de una subclase de
io.BufferedIOBase
Leer Archivos
Al abrir un archivo en modo lectura, se nos devuelve un objeto con acceso a métodos tales como:
read(size)
→ Lee el archivo y devuelve un string (str
) del stream con un máximo desize
caracteres. Sisize
está vacio devuelve hastaEOF
(end of file)readline(size)
→ Lee el archivo hasta un final de linea o de archivo y devuelve un string (str
). Consize
fijamos el máximo de caracteres devueltosreadlines(hint)
→ Devuelve una lista de lineas desde el stream
f = open("data.txt", "r")
lines = f.read()
line = f.readline()
f = open('/home/ubuntu/workspace/files/relative_data.txt', 'r')
content = f.read()
f.close()
print(content)
Para obtener las lineas de un archivo podemos hacer
f = open('/home/ubuntu/workspace/files/relative_data.txt', 'r')
lines = f.readlines()
print(lines)
# ['This is my first file\n', 'This file\n', 'contains three lines\n']
Aunque tambien podemos hacer…
f = open('data.txt', 'r')
for line in f:
print(line)
Cuando abrimos un archivo en modo, se genera un cursor que va cambiando su posición a medida que operamos con el archivo
f = open("test.txt",'r',encoding = 'utf-8')
f.read(4) # read the first 4 data → 'This'
f.read(4) # read the next 4 data → ' is '
f.read() # read in the rest till end of file → 'my first file\nThis file\ncontains three lines\n'
f.read() # further reading returns empty sting
Podemos cambiar la posición del cursor con el método seek()
o averiguar su posición con el método tell()
Escribir Archivos
Al abrir un archivo en modo lectura, se nos devuelve un objeto con acceso a métodos tales como:
write(s)
→ Escribe el strings
en el stream y devuelve el número de caracteres escritoswritelines(lines)
→ Escribe una lista de lineas (separadas por\n
) en el stream
f = open('newfile.txt', 'a')
lines = ['Hello','World','Welcome','To','File IO']
text = '\n'.join(lines)
f.writelines(text)
f.close()
Modos de apertura de archivos
Modos Básicos
r
→ (por defecto) Abre un archivo para lecturaw
→ Abre un archivo para escritura. Crear un nuevo archivo si no existe o lo sobrescribe si ya existea
→ Abre un archivo para añadir texto al final del archivo si ya existe. Si no existe lo crea.
Modos Extra
x
→ Abre un archivo para creación exclusiva. Si el archivo ya existe la operación falla.t
→ Abre un archivo en modo texto. (default)
Modos Combinados
b
(rb
,wb
,ab
) → Abre archivo en modo binario+
→ Abre archivo para actualización (lectura y escritura)r+
→ lectura/escritura (si el archivo no existe, lanzará un error. Si existe sobrescribe el archivo)w+
→ lectura/escritura (si el archivo no existe, se crea. Si existe sobrescribe el archivo)a+
→ lectura/añadir (si el archivo no existe, se crea. Si existe añade el contenido al final)