Lectura i escriptura de fitxers de text¶
Funció open()¶
La funció open() s'utilitza normalment amb dos paràmetres (fitxer amb el que anem a treballar i mode d'accés) i ens retorna un objecte de tipus fitxer.
Es molt important tancar els fitxers una vegada ja no els utilitzem per alliberar els recursos del sistema operatiu. Podeu veure més informació de que passa quan no tanquem els fitxers en aquest link
Modes d'accés¶
Els modes què podem seleccionar son:
| Mode | Comportament | Punter |
| r | Només lectura | A l'inici del fitxer |
| rb | Només lectura en mode binari | |
| r+ | Lectura i escriptura | A l'inici del fitxer |
| rb+ | Lectura i escriptura binari | A l'inici del fitxer |
| w | Només escriptura. Sobreescriu si existeix. Crea el fitxer si no existeix. | A l'inici del fitxer |
| wb | Només escriptura en mode binari. Sobreescriu si existeix. Crea el fitxer si no existeix. | A l'inici del fitxer |
| w+ | Escriptura i lectura. Sobreescriu si existeix. Crea el fitxer si no existeix. | A l'inici del fitxer |
| wb+ | Escriptura i lectura binaria. Sobreescriu si existeix. Crea el fitxer si no existeix. | A l 'inici del fitxer |
| a | Añadido (agregar contenido). Crea el archivo si no existe. | Si el archivo existe, al final de éste. Si el archivo no existe, al comienzo. |
| ab | Añadido en modo binario. Crea si éste no existeSi el archivo existe, al final de éste. Si el archivo no existe, al comienzo. | |
| a+ | Añadido y lectura. Crea el archivo si no existe. | Si el archivo existe, al final de éste. Si el archivo no existe, al comienzo. |
| ab+ | Añadido y lectura en binario. Crea el archivo si no existe | Si el archivo existe, al final de éste. Si el archivo no existe, al comienzo. |
Codificació de caràcters¶
Si treballem amb fitxers de texte podem indicar també el paràmetre encoding que serà la codificació de caràcters utilitzats al treballar amb el fitxer. Per defecte s'utilitzarà la que estigui indicada pel sistema:
>>> f = open("exemple.txt","w",encoding="utf-8")
>>> import locale
>>> locale.getpreferredencoding()
'UTF-8'
I per últim també podem indicar el parámetre errors que controla el comportament quan es troba algún error al codificar o decodificar caràcters.
Objecte fitxer (obrir i tancar)¶
Al obrir un fitxer amb un determinat mode d'accés la funció open() ens retorna un objecte de tipus fitxers. El fitxer obert sempre s'ha de tancar amb el mètode close():
Es molt important tancar els fitxers una vegada ja no els utilitzem per alliberar els recursos del sistema operatiu. Podeu veure més informació de que passa quan no tanquem els fitxers en aquest link
Es poden accedir a les següents propietats d'un objecte file:
closed: retornaTruesi el fitxer s'ha tancat. De lo contrari,False.mode: retorna el mode d'obertura.name: retorna el nom del fitxerencoding: retorna la codificació de caràcteres d'un fitxer de texte
Podem obrir-lo i tancar-lo amb la mateixa instrucció amb la següent estructura:
Quan utilitzem el "with" el fitxer es tancarà al trobar la primera instrucció fora de la estructura (menys indentació) .
Mètodes principals¶
Mètodes de lectura¶
>>> f = open("exemple1.txt","r")
>>> f.read()
'Hola que tal\n'
>>> f = open("exemple1.txt","r")
>>> f.read(4)
'Hola'
>>> f.read(4)
' que'
>>> f.tell()
8
>>> f.seek(0)
>>> f.read()
'Hola que tal\n'
>>> f = open("exemple2.txt","r")
>>> f.readline()
'Línea 1\n'
>>> f.readline()
'Línea 2\n'
>>> f.seek(0)
0
>>> f.readlines()
['Línea 1\n', 'Línea 2\n']
Mètodes d'escriptura¶
>>> f = open("exemple3.txt","w")
>>> f.write("Prova 1\n")
9
>>> print("Prova 2\n",file=f)
>>> f.writelines(["Prova 3","Prova 4"])
>>> f.close()
>>> f = open("exemple3.txt","r")
>>> f.read()
'Prpva 1\nProva 2\n\Prova 3Prova 4'