con Python é possibile gestire i files

sintassi




utilizzo di with
supporta context manager
é possibile gestire l'apertura, lettura e scrittura dei file anche utilizzando with
evita di dimenticarsi di chiudere il file



esempio: creo/apro un file e scrivo due righe + visualizzo
f = open('test.txt', 'w') apro file di testo in srittura (cancellandolo) o lo creo se non esiste

dir(f) lista delle funzoni disponibile per l'oggetto f (tipo file)
f.name visualizzo nome del file
f.mode visualizzo il modo

f.write('prima riga del file\n') scrive la prima riga
f.write('seconda riga del file\n') scrive la seconda riga

f.close() chiudo il file

f = open('test.txt') apro in lettura
testo = f.read() memorizzo in una variabile il testo
print(content) visualizzo la variabile testo e quindi il testo del file
f.close() chiudo il file



esempio: scrittura e lettura lista
lines = [ ceriamo la lista di stringhe

'prima riga del file\n',
'seconda riga del file\n',
'terza riga del file\n',
]



scrittura della lista nel file
f = open('test.txt', 'w') apriamo il file in scrittura
f.writelines(lines) usiamo il metodo writelines per scrivere le righe nel file
f.close() chiudiamo il file


lettura del file in una lista
f = open('test.txt') riapriamo il file in lettura
f.readlines() usiamo il metodo readlines per ottenere una lista di righe del file (['prima riga del file\n', 'seconda riga del file\n', 'terza riga del file\n'])
f.close() chiudiamo il file


lettura del file riga per riga
f = open('test.txt') riapriamo il file in lettura
f.readline() usiamo il metodo readline per ottenere una singola riga del file ('prima riga del file\n')
f.readline() usiamo il metodo readline per ottenere una singola riga del file ('seconda riga del file\n')
f.readline() usiamo il metodo readline per ottenere una singola riga del file ('terza riga del file\n')
f.readline() quando abbiamo letto tutto, il metodo restituisce una stringa vuota ('')
f.close() chiudiamo il file


utilizzo un for per iterare sulle righe di un file
f = open('test.txt') riapriamo il file in lettura
for riga in f: iteriamo sulle righe del file
riga

'prima riga del file\n'
'seconda riga del file\n'
'terza riga del file\n'

f.close() chiudiamo il file



esempio: scrittura e lettura con spostamento nel file
lines = [ definiamo una lista di righe

'prima riga del file\n',
'seconda riga del file\n',
'terza riga del file\n',
]

f = open('test.txt', 'w') apriamo il file in scrittura
f.writelines(lines) usiamo il metodo writelines per scrivere le righe nel file

f.seek(0, 0) eseguiamo un seek per spostarci all'inizio del file (0)
f.write('PRIMA') scriviamo 'PRIMA' all'inizio del file sovrascrivendo il testo 'prima' e non il resto della riga (5)

f.seek(0, 2) eseguiamo un seek per spostarci alla fine del file (62)
f.write('quarta riga del file\n') aggiungiamo una riga alla fine (21)

f.close() chiudiamo il file


f = open('test.txt') riapriamo il file in lettura
f.readline() usiamo il metodo readline per ottenere una singola riga del file ('PRIMA riga del file\n')
f.readline() usiamo il metodo readline per ottenere un'altra riga del file ('seconda riga del file\n')

f.tell() # vediamo che la posizione nel file è avanzata
42

f.read() usiamo il metodo read per leggere il resto del contenuto del file ('terza riga del file\nquarta riga del file\n')

f.tell() vediamo che la posizione nel file è avanzata ulteriormente
83

f.read() quando abbiamo letto tutto, il metodo restituisce una stringa vuota ('')

f.seek(0) eseguiamo un seek per spostarci all'inizio del file (0)
f.tell() vediamo che la posizione è ritornata a 0
0

f.readlines() rileggiamo l'intero contenuto del file come lista di stringhe
['PRIMA riga del file\n', 'seconda riga del file\n', 'terza riga del file\n', 'quarta riga del file\n']

f.close() chiudiamo il file