Diferència entre revisions de la pàgina «ASIX-M3-UF3-A2»
(→Escriure en un fitxer) |
|||
Línia 75: | Línia 75: | ||
</source> | </source> | ||
amb el with obrim sempre en mode lectura, i no ens cal indicar el tancament | 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 llegir un fitxer== | ||
+ | |||
+ | for linia in fitxer | ||
+ | <source lang="python"> | ||
+ | fitxer = open("origen.txt") | ||
+ | fitxerCopia = open("desti.txt","w") | ||
+ | for linia in fitxer: | ||
+ | fitxerCopia.write(linia) | ||
+ | fitxerCopia.close() | ||
+ | fitxer.close() | ||
+ | </source> | ||
+ | |||
+ | Amb readline() | ||
+ | <source lang="python"> | ||
+ | fitxer = open("origen.txt") | ||
+ | fitxerCopia = open("desti.txt","w") | ||
+ | linia = fitxer.readline() | ||
+ | while linia != "": | ||
+ | fitxerCopia.write(linia) | ||
+ | linia = fitxer.readline() | ||
+ | fitxerCopia.close() | ||
+ | fitxer.close() | ||
+ | </source> |
Revisió del 19:11, 2 maig 2021
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.
- w: Si el fitxer existeix, trunca la longitud a zero i sinó el crea. El punter es posiciona al començament del fitxer.
- w+: Obrir fitxer per lectura i escriptura. Si el fitxer no existeix, el crea, sinó el trunca a longitud zero. El punter es posiciona al principi del fitxer.
- a: Obrir fitxer per lectura. Es crea sinó existeix. El punter es posiciona al final del fitxer.
- a+: Obrir fitxer per lectura i escriptura. Si el fitxer no existeix, el crea. 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 llegir 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()