File di testo

Introduzione

Vedremo qui di seguito diversi modi per accedere a file di testo in lettura e scrittura. Negli esempi, le stringhe provengono dal testo latino Lorem Ipsum.

Lettura, primo approccio

Si può aprire un file e fare un ciclo che termina quando la riga letta è vuota (ossia, quando non c'è nemmeno il carattere di 'a capo')

file_in = open('loremipsum.txt')
while True:
    line = file_in.readline()
    if line == '':
        break
    print(line, end='')
file_in.close()

Scrittura

In questo esempio, scriviamo in un file le stringhe presenti in una tupla.

lines = (
    'Aenean non nulla ut neque pharetra faucibus feugiat sit amet erat.',
    'Nullam sed elit ante.',
    'Praesent aliquet dictum mauris, non pretium leo luctus eu.'
    )

file_out = open('aenannon.txt', 'w')
for line in lines:
    file_out.write(line+'\n')

file_out.close()

Aggiunta

Se vogliamo aggiungere righe ad un file, la modalità di apertura è 'a' (per append).

newlines = (
    'Vestibulum viverra molestie nulla, sed aliquet urna malesuada in.',
    'Etiam porttitor quam ut massa rutrum vitae volutpat erat interdum.',
    'Etiam lorem purus, sollicitudin ac pretium in, pellentesque ac magna.',
    'Nam laoreet, turpis nec feugiat mollis, metus augue sollicitudin augue, in dictum nulla dolor ac nulla.'
    )

file_out = open('aenannon.txt', 'a')
for line in newlines:
    file_out.write(line+'\n')
file_out.close()

Lettura, secondo approccio

Per leggere tutte le righe di un file, si può iterare sull'oggetto file:

file_written = open('aenannon.txt')  # leggiamo il file appena scritto
for line in file_written:
    print(line, end='')
file_written.close()

Lettura, terzo approccio

In questo esempio, usiamo un contesto con la parola riservata with e il metodo readlines che legge tutte le righe del file mettendole in una lista. Si noti che, usando il contesto, il file viene automaticamente chiuso.

with open('aenannon.txt') as f:
    lines = f.readlines()
for line in lines:
    print(line, end='')

Lettura, ordinamento, scrittura

Immaginiamo di avere un file di testo contenente delle righe che vogliamo ordinare alfabeticamente per produrre un file di testo ordinato. Possiamo aprire un doppio contesto con i due file, in questo modo:

with open('unordered.txt') as f_in, open('ordered.txt', 'w') as f_out:
    lines=f_in.readlines()
    lines.sort()
    f_out.writelines(lines)

results matching ""

    No results matching ""