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

De wikiserver
Dreceres ràpides: navegació, cerca
(Escriure en un fitxer)
 
(Hi ha 10 revisions intermèdies del mateix usuari que no es mostren)
Línia 3: Línia 3:
  
 
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")
+
fitxer = open("nom_fitxer.txt", "mode")
 
+
</source>
 
Modes:
 
Modes:
  
 
:* 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.
:* '''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 escriptura. El punter es posiciona al final 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.
 
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==
 
==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==
 
==Escriure en un fitxer==
  
Un cop tinguem el fitxer obert ja podem fer coses amb ell. Per ex:
+
Un cop obert el fitxer per escriptura disposem de la funció write()
  
fitxer = open("fitxerprova.txt", "w")  
+
Exemples:
 +
<source lang=python>
 +
fitxer.open("nom_fitxer.txt","w")
  
fitxer.write("Hola món\n")  # el caràcter \n indica salt de línia
+
fitxer.write("Hola a tothom\n")  # el caràcter \n indica salt de línia
fitxer.write("Aquest és el nostre fitxer de text nou\n")  
+
fitxer.write("Segona línia del meu primer fitxer de text \n")  
fitxer.write("i això és una línia nova\n")  
+
fitxer.write("Línia nova\n")  
fitxer.write("I el fitxer s'ha creat.\n")  
+
fitxer.write("Darrera línia.\n")
  
fitxer.close()
+
fitxer.close()  
 +
</source>
  
I efectivament si mirem el fitxer amb un editor de text, a dintre hi veurem:
+
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>
  
Hola món
+
o també podem veure el contingut del fitxer, fent:
Aquest és el nostre fitxer de text nou
+
<source lang="python">
i això és una línia nova
+
fitxer = open("nom_fitxer.txt", "r")  
I el fitxer s´ha creat.
+
print(fitxer.read()) # fitxer.read() retorna un string amb tot el contingut del fitxer
 
 
Llegir d'un fitxer
 
 
 
Quan llegim un fitxer python ens retorna un string amb el seu contingut
 
 
 
file = open("fitxerprova.txt", "r")  
 
print(file.read())
 
 
file.close()
 
file.close()
 +
</source>
  
Que ens mostrarà:
+
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>
  
Hola món
+
Si volem diverses accions de lectura sobre un fitxer podem usar l´ordre with...
     Aquest és el nostre fitxer de text nou
+
<source lang="python">
     i això és una línia nova
+
with open("nom_fitxer.txt") as fitxer: 
    I el fitxer s'ha creat.
+
     textFitxer = fitxer.read()
 +
     ...
 +
</source>
 +
amb el with obrim sempre en mode lectura, i no ens cal indicar el tancament
  
o també podem optar a llegir-lo línia a línia
+
==Control del punter==
  
file = open("fitxerprova.txt", "r")  
+
:*fitxer.tell() ens diu la posició del punter.
print(file.readlines())
+
:*fitxer.seek (n,[p]) desplaçar el punter fins el byte n del fitxer des de la posició p.
file.close()
+
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.
  
Que ens mostrarà
+
==Bucles per fer una còpia d'un fitxer==
  
['Hola món\n', 'Aquest és el nostre fitxer de text nou\n', 'i això és una línia nova\n', 'I el fitxer s'ha creat.\n']
+
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>
  
Podem també recorrer un fitxer dins una iteració:
+
Amb readline()
 
+
<source lang="python">
file = open("fitxerprova.txt", "r")  
+
fitxer = open("origen.txt")
for l in file:
+
fitxerCopia = open("desti.txt","w")
    print(l)
+
linia = fitxer.readline()
file.close()
+
while linia != "":
 
+
  fitxerCopia.write(linia)
Que ens mostrarà
+
  linia = fitxer.readline()
 
+
fitxerCopia.close()
Hola món
+
fitxer.close()
 
+
</source>
Aquest és el nostre fitxer de text nou
 
 
 
i això és una línia nova
 
 
 
I el fitxer s'ha creat..
 
 
 
Gestió elegant de fitxers
 
 
 
Quan volem fer diverses accions de lectura sobre un fitxer podem usar l´ordre with...
 
  
with open("fitxerprova.txt") as file: 
+
==Enllaços==
    data = file.read()
 
    do something with data
 
 
 
amb el with obrim sempre en mode lectura, i no ens cal indicar el tancament
 
  
És molt recomanable doncs usar aquesta sintaxi quan s´escau.
+
[http://conocepython.blogspot.com/p/ape.html fitxers de text]

Revisió de 15: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