Diferència entre revisions de la pàgina «ASIX-M3-UF3-A2»
(→Escriure en un fitxer) |
(→Escriure en un fitxer) |
||
(Hi ha 6 revisions intermèdies del mateix usuari que no es mostren) | |||
Línia 10: | Línia 10: | ||
:* Per defecte el mode és '''r'''. | :* 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. El punter es posiciona al començament del fitxer. | ||
− | :* '''r+:''' Obrir fitxer per lectura i escriptura. | + | :* '''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. | :* '''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. | 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. | ||
Línia 33: | Línia 32: | ||
Un cop obert el fitxer per escriptura disposem de la funció write() | Un cop obert el fitxer per escriptura disposem de la funció write() | ||
− | fitxer | + | Exemples: |
+ | <source lang=python> | ||
+ | fitxer.open("nom_fitxer.txt","w") | ||
− | fitxer.write("Hola | + | fitxer.write("Hola a tothom\n") # el caràcter \n indica salt de línia |
− | fitxer.write(" | + | fitxer.write("Segona línia del meu primer fitxer de text \n") |
− | fitxer.write(" | + | fitxer.write("Línia nova\n") |
− | fitxer.write(" | + | fitxer.write("Darrera línia.\n") |
− | fitxer.close() | + | 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 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | print( | ||
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"> | |
− | i | + | 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()