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.
>>> f = open("exemple.txt","w")
<class '_io.TextIOWrapper'>
>>> f.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
Els modes què podem seleccionar son:
Añadido en modo binario. Crea si éste no existeMode | 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 | Si 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. |
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.
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()
:
>>> f = open("exemple.txt","w")
>>> type(f)
<class '_io.TextIOWrapper'>
>>> f.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
: retornaTrue
si 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:
>>> with open("ejemplo.txt", "r") as fitxer:
... contenido = fitxer.read()
>>> fitxer.closed
True
Quan utilitzem el "with" el fitxer es tancarà al trobar la primera instrucció fora de la estructura (menys indentació) .
>>> 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']
>>> 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'
>>> with open("exemple3.txt","r") as fitxer:
... for linia in fitxer:
... print(linia)