Fitxers de text

Fitxers

Els fitxers

  • contenen les dades (i programes) emmagatzemats en dispositius d’emmagatzematge no volàtils

  • s’identifiquen amb un nom que és un camí dins del sistema de fitxers

  • poden ser de text o binaris en funció del seu contingut

Per tal d’accedir al contingur d’un fitxer des d’un programa cal

obrir el fitxer en mode lectura

obrir el fitxer en mode escriptura

llegir el contingut

escriure el contingut

tancar el fitxer

tancar el fitxer

Fitxers de text

  • Un fitxer de text conté caràcters organitzats en línies

  • Una línia és un string acabat amb un caràcter de control salt de línia ('\n')

  • És habitual llegir-los línia a línia:

    with open(nom_fitxer, 'r') as fitxer:
        for linia in fitxer:
            # Tractar la línia
    
  • I escriure’ls línia a línia:

    with open(nom_fitxer, 'w') as fitxer:
        for element in estructura_de_dades:
            linia = calcula_linia(element)
            fitxer.write(linia)
            # linia ha de contenir `\n`
    

Obrir

  • Funció open()

    fitxer = open(nom_fitxer, mode)
    
  • Permet accedir al contingut del fitxer o escriure-hi mitjançant l’objecte fitxer

  • Reserva un recurs del sistema operatiu

  • Què passa si

    • obrim per lectura un fitxer que existeix? Podem accedir al seu contingut

    • obrim per lectura un fitxer que no existeix? Error FileNotFoundError

    • obrim per escriptura un fitxer que existeix? Perd el contingut antic i només contindrà allò que hi escribim

    • obrim per escriptura un fitxer que no existeix? Crea el fitxer amb el contingut que hi escribim

Tancar

  • Mètode close()

    fitxer.close()
    
  • Allibera el recurs del sistema operatiu

Per què usar la sentència with?

Garanteix que el fitxer queda tancat en acabar d’executar-se el bloc, fins i tot si es produeix un error d’execució

Operacions

En mode lectura

  • El mètode read() llegeix des del caràcter actual del fitxer fins al final o fins al nombre de caràcters, si es crida amb un argument

  • El mètode readline() llegeix la línia següent del fitxer

En mode escriptura

  • El mètode write() escriu un string al fitxer

  • Cal acabar les línies amb el caràcter de control salt de línia ('\n')

Algorismes

En mode lectura

En mode escriptura

  • Anàlegs a la creació de llistes amb append() a partir de la llista buida

    • Obrir el fitxer en mode escriptura equival a la llista buida

    • Escriure una línia amb write() equival a afegir un element a la llista amb append()

Exercicis