Fitxers de text¶
Fitxers¶
Els fitxers
contenen les dades (i programes) emmagatzemats en dispositius d’emmagatzematge no volàtils
s’identifiquen amb un nom que és un camí dins del sistema de fitxers
poden ser de text o binaris en funció del seu contingut
Per tal d’accedir al contingur d’un fitxer des d’un programa cal
obrir el fitxer en mode lectura |
obrir el fitxer en mode escriptura |
llegir el contingut |
escriure el contingut |
tancar el fitxer |
tancar el fitxer |
Fitxers de text¶
Un fitxer de text conté caràcters organitzats en línies
Una línia és un string acabat amb un caràcter de control salt de línia (
'\n')És habitual llegir-los línia a línia:
with open(nom_fitxer, 'r') as fitxer: for linia in fitxer: # Tractar la línia
I escriure’ls línia a línia:
with open(nom_fitxer, 'w') as fitxer: for element in estructura_de_dades: linia = calcula_linia(element) fitxer.write(linia) # linia ha de contenir `\n`
Obrir¶
Funció
open()fitxer = open(nom_fitxer, mode)
nom_fitxer és un string que conté el nom de fitxer. Pot ser un camí relatiu o absolut
mode també és un string i pot ser lectura (
'r') o escriptura ('w')fitxer és un objecte fitxer
Permet accedir al contingut del fitxer o escriure-hi mitjançant l’objecte fitxer
Reserva un recurs del sistema operatiu
Què passa si
obrim per lectura un fitxer que existeix? Podem accedir al seu contingut
obrim per lectura un fitxer que no existeix? Error
FileNotFoundErrorobrim per escriptura un fitxer que existeix? Perd el contingut antic i només contindrà allò que hi escribim
obrim per escriptura un fitxer que no existeix? Crea el fitxer amb el contingut que hi escribim
Tancar¶
Mètode
close()fitxer.close()
Allibera el recurs del sistema operatiu
Per què usar la sentència with?¶
Garanteix que el fitxer queda tancat en acabar d’executar-se el bloc, fins i tot si es produeix un error d’execució
Operacions¶
En mode lectura¶
El mètode
read()llegeix des del caràcter actual del fitxer fins al final o fins al nombre de caràcters, si es crida amb un argumentEl mètode
readline()llegeix la línia següent del fitxer
En mode escriptura¶
El mètode
write()escriu un string al fitxerCal acabar les línies amb el caràcter de control salt de línia (
'\n')
Algorismes¶
En mode lectura¶
Els objectes fitxer són iterables, com les seqüències i els diccionaris
Important
Però s’esgoten. De fet, són iteradors
Els Algorismes sobre seqüències són algorismes sobre iterables: els esquemes de recorregut i l'esquema de cerca serveixen per als fitxers
Per tal de recòrrer el número de línia i la línia, cal usar el Recorregut dels índexs d’una seqüència amb
enumerate()
En mode escriptura¶
Anàlegs a la creació de llistes amb
append()a partir de la llista buidaObrir el fitxer en mode escriptura equival a la llista buida
Escriure una línia amb
write()equival a afegir un element a la llista ambappend()