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