Diferència entre revisions de la pàgina «ASIX-M3-UF3-A2»

De wikiserver
Dreceres ràpides: navegació, cerca
(Bucles per llegir un fitxer)
(Escriure en un fitxer)
 
(Hi ha una revisió intermèdia del mateix usuari que no es mostren)
Línia 46: Línia 46:
 
Si obrim el fitxer amb un editor de text, veurem:
 
Si obrim el fitxer amb un editor de text, veurem:
 
<pre>
 
<pre>
Hola a to
+
Hola a tothom
Aquest és el nostre fitxer de text nou
+
Segona línia del meu primer fitxer de text
i això és una línia nova
+
Línia nova
I el fitxer s´ha creat.
+
Darrera línia.
 
</pre>
 
</pre>
  
Línia 70: Línia 70:
 
<source lang="python">
 
<source lang="python">
 
with open("nom_fitxer.txt") as fitxer:   
 
with open("nom_fitxer.txt") as fitxer:   
     textFitxer = file.read()  
+
     textFitxer = fitxer.read()  
 
     ...
 
     ...
 
</source>
 
</source>

Revisió de 14:15, 11 maig 2021

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()

Enllaços

fitxers de text