ASIX-M3-UF3-A2
Contingut
Obrir i tancar
Per poder treballar amb un fitxer primer de tot cal obrir-lo.
fitxer = open("nom_fitxer.txt", "mode")
Modes:
- Per defecte el mode és r.
- r: Obrir fitxer per lectura. El punter es posiciona al començament del fitxer.
- r+: Obrir fitxer per lectura i escriptura. Es sobreescriu a partir de la posició on es trobi el punter.
- w: Si el fitxer existeix, trunca la longitud a zero i sinó el crea. El punter es posiciona al començament del fitxer.
- a: Obrir fitxer per escriptura. El punter es posiciona al final del fitxer.
Hem de pensar sempre a tancar els fitxers un cop oberts perquè altrament es podrien produir resultats inesperats a l´hora de fer altres entrades o sortides o podríem tenir problemes de memòria.
fitxer.close()
Llegir d'un fitxer
un cop obert el fitxer per lectura, disposem de dues funcions: fitxer.read() i fitxer.readline()
- Lectura de tot el fitxer de cop: textFitxer = fitxer.read()
- Lectura de 100 bytes: textFitxer = fitxer.read(100)
- Lectura d'una línia complerta: textFitxer = fitxer.readline()
Escriure en un fitxer
Un cop obert el fitxer per escriptura disposem de la funció write()
Exemples:
fitxer.open("nom_fitxer.txt","w")
fitxer.write("Hola a tothom\n") # el caràcter \n indica salt de línia
fitxer.write("Segona línia del meu primer fitxer de text \n")
fitxer.write("Línia nova\n")
fitxer.write("Darrera línia.\n")
fitxer.close()
Si obrim el fitxer amb un editor de text, veurem:
Hola a to Aquest és el nostre fitxer de text nou i això és una línia nova I el fitxer s´ha creat.
o també podem veure el contingut del fitxer, fent:
fitxer = open("nom_fitxer.txt", "r")
print(fitxer.read()) # fitxer.read() retorna un string amb tot el contingut del fitxer
file.close()
Podem també recórrer un fitxer dins una iteració:
fitxer = open("nom_fitxer.txt", "r")
for linia in fitxer:
print(linia)
fitxer.close()
Si volem diverses accions de lectura sobre un fitxer podem usar l´ordre with...
with open("nom_fitxer.txt") as fitxer:
textFitxer = file.read()
...
amb el with obrim sempre en mode lectura, i no ens cal indicar el tancament
Control del punter
- fitxer.tell() ens diu la posició del punter.
- fitxer.seek (n,[p]) desplaçar el punter fins el byte n del fitxer des de la posició p.
on p pot ser:
- res o 0: la posició és relativa al començament del fitxer.
- 1: la posició és relativa a la posició actual-
- 2: la posició es relativa al final del fitxer enredera.
Bucles per fer una còpia d'un fitxer
for linia in fitxer
fitxer = open("origen.txt")
fitxerCopia = open("desti.txt","w")
for linia in fitxer:
fitxerCopia.write(linia)
fitxerCopia.close()
fitxer.close()
Amb readline()
fitxer = open("origen.txt")
fitxerCopia = open("desti.txt","w")
linia = fitxer.readline()
while linia != "":
fitxerCopia.write(linia)
linia = fitxer.readline()
fitxerCopia.close()
fitxer.close()