Diferència entre revisions de la pàgina «ASIX-M3-UF3-A2»
(Es crea la pàgina amb « Per poder treballar amb un fitxer primer de tot cal obrir-lo Atenció: el fitxer ha de ser a la mateixa carpeta que la funció (que el notebook o que l'arxiu .py)...».) |
(→Escriure en un fitxer) |
||
(Hi ha 12 revisions intermèdies del mateix usuari que no es mostren) | |||
Línia 1: | Línia 1: | ||
+ | ==Obrir i tancar== | ||
− | Per poder treballar amb un fitxer primer de tot cal obrir-lo | + | Per poder treballar amb un fitxer primer de tot cal obrir-lo. |
+ | <source lang="python"> | ||
+ | fitxer = open("nom_fitxer.txt", "mode") | ||
+ | </source> | ||
+ | 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. | ||
+ | <source lang="python"> | ||
fitxer.close() | fitxer.close() | ||
+ | </source> | ||
− | + | ==Llegir d'un fitxer== | |
− | + | un cop obert el fitxer per lectura, disposem de dues funcions: fitxer.read() i fitxer.readline() | |
− | |||
− | i | ||
− | |||
− | + | :* 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: | |
+ | <source lang=python> | ||
+ | fitxer.open("nom_fitxer.txt","w") | ||
− | Hola | + | 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() | |
+ | </source> | ||
− | + | Si obrim el fitxer amb un editor de text, veurem: | |
− | + | <pre> | |
− | + | Hola a tothom | |
+ | Segona línia del meu primer fitxer de text | ||
+ | Línia nova | ||
+ | Darrera línia. | ||
+ | </pre> | ||
− | + | o també podem veure el contingut del fitxer, fent: | |
− | + | <source lang="python"> | |
− | + | fitxer = open("nom_fitxer.txt", "r") | |
− | + | print(fitxer.read()) # fitxer.read() retorna un string amb tot el contingut del fitxer | |
− | |||
− | |||
− | |||
− | |||
− | |||
file.close() | file.close() | ||
+ | </source> | ||
− | + | Podem també recórrer un fitxer dins una iteració: | |
+ | <source lang="python"> | ||
+ | fitxer = open("nom_fitxer.txt", "r") | ||
+ | for linia in fitxer: | ||
+ | print(linia) | ||
+ | fitxer.close() | ||
+ | </source> | ||
− | + | Si volem diverses accions de lectura sobre un fitxer podem usar l´ordre with... | |
+ | <source lang="python"> | ||
+ | with open("nom_fitxer.txt") as fitxer: | ||
+ | textFitxer = fitxer.read() | ||
+ | ... | ||
+ | </source> | ||
+ | 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 | |
+ | <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> | ||
− | + | ==Enllaços== | |
− | |||
− | |||
− | |||
− | |||
− | + | [http://conocepython.blogspot.com/p/ape.html fitxers de text] |
Revisió de 14:15, 11 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. 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 tothom Segona línia del meu primer fitxer de text Línia nova Darrera línia.
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 = fitxer.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()