Python: Gestión de ficheros con Open
Formato:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
Modos disponibles:
Caracter | Significado |
---|---|
'r' |
abre para lectura (por defecto) |
'w' |
abre para escritura, borrando (truncando) el fichero primero |
'x' |
abre para creación en exclusiva, si el fichero YA existe da error |
'a' |
abre para escritura, añadiendo al final del fichero en caso de que exista |
'b' |
modo binario |
't' |
modo texto (por defecto) |
'+' |
abre un fichero para actualizar (lectura y escritura) |
Una vez que el fichero está abierto podemos usar diferentes métodos:
Lee al menos la cantidad de caracteres indicados por tamaño
del fichero, por defecto (sin parámetros, valores negativos o None) lee el fichero completo hasta el final. Una vez leído el fichero por completo, si volvemos a ejecutar el método, obtendremos cadena vacía ''. Podemos ir al principio con el método seek.
In [1]: f = open("fichero.txt") In [2]: print(f.read()) ---contenido de fichero.txt---
Podemos usar .splitlines()
para quitar el código de nueva línea
y crear una lista con dada línea del fichero de texto:
In [1]: f = open("fichero.txt") In [2]: print(f.read().splitlines()) ['linea1', 'lineas2', ....]
Cambia la posición del flujo (punto dentro del fichero) al desplazamiento
indicado. El comportamiento depende de desde_donde
:
desplazamiento
debe ser un número devuelto por TextIOBase.tell(), o cero (que situa el puntero al principio del fichero). Cualquier otro valor produce un comportamiento indefinido.desplazamiento
debe ser cero, que es no-hace-nada.desplazamiento
debe ser cero.In [1]: f = open("fichero.txt") In [2]: print(f.read()) ---contenido de fichero.txt--- In [3]: print(f.read()) In [4]: f.seek(0) In [4]: 0 In [5]: print(f.read()) ---contenido de fichero.txt---
Lee hasta nueva lines ( ) o final de fichero (EOF) y devuelve una cadena (str). Una vez leído el fichero por completo, si volvemos a ejecutar el método, obtendremos cadena vacía ''. Podemos ir al principio con el método seek.
Si se especifica tamaño
, se leen al menos la cantidad de caracteres indicados.
In [1]: f = open("fichero.txt") In [2]: print(f.readline()) ---primera linea de fichero.txt--- In [3]: print(f.readline()) ---segunda linea de fichero.txt--- In [4]: print(f.readline()) ---tercera linea de fichero.txt---
Lee el fichero linea por linea y devuelve una lista con cada linea como elementos. Se puede especificar hint
para controlar el número de líneas a leer.
In [1]: f = open("fichero.txt") In [2]: print(f.readlines()) ['linea 1 ', 'linea 2 ', lines 3 ']
Escribe en el fichero de texto la cadena indicada. El fichero ha tenido que abrirse con modo de escritura. Devuelve el número de caracteres que ha escrito.
In [1]: f = open("fichero.txt", mode="w") In [2]: f.write("cadena de texto ") 16 In [3]: variable = "otra cadena" In [4]: f.seek(0) In [4]: 0 In [5]: print(f.read()) ---contenido de fichero.txt---
Vacía los buffers si hay algo que vaciar.
Vacía los buffers y cierra el fichero si no estaba ya cerrado.
Para vaciar un fichero de texto (en principio cualquier tipo) podemos usar lo siguiente:
open('fichero', 'w').close()
Esto emula el comando unix > fichero
.
Más información en: función open()