
Il metodo writelines() in Python
In questo tutorial parliamo di writelines in Python. Questa funzione è uno strumento molto utile quando si lavora con file in Python, soprattutto se hai bisogno di scrivere una lista di stringhe in un file.
writelines(data)
Tra le parentesi tonde la funzione writelines prende come argomento "data" un oggetto iterabile composto da stringhe e le scrive in un file.
A differenza di write, che scrive una singola stringa, writelines ti permette di passare e scrivere una lista intera nel file. E' quindi molto più comodo per scrivere più righe contemporaneamente.
Ricorda di gestire le nuove righe "\n" nelle tue stringhe se vuoi che appaiano su righe separate nel file. Altrimenti, le stringhe vengono scritte in un'unica riga.
Ecco un esempio pratico di base.
Crea una lista, un oggetto iterabile, contenente diverse stringhe al suo interno.
lines = ["Ciao mondo!\n", "Ecco un esempio di writelines.\n", "Spero sia chiaro.\n"]
Ora apri un file in modalità di scrittura "w" oppure aggiunta, se non vuoi sovrascrivere il contenuto esistente.
with open("esempio.txt", "w") as file:
file.writelines(lines)
In questo esempio, "lines" è una lista di stringhe, ognuna delle quali rappresenta una riga da scrivere nel file "esempio.txt".
Nota l'uso del simbolo di nuova linea "\n" alla fine di ogni stringa per inserire una nuova riga, in modo che le stringhe non finiscano tutte sulla stessa riga nel file.
Perché usare writelines e non un ciclo? Potresti chiederti: perché dovrei usare writelines invece di semplicemente iterare sulla lista e scrivere ogni stringa con write? Beh, in termini di risultato finale, potresti non notare una grande differenza, ma writelines è più conciso e diretto, specialmente se hai già una lista pronta di stringhe da scrivere. È anche leggermente più efficiente, poiché minimizza il numero di chiamate alla funzione di scrittura.
Facciamo un altro esempio più complesso
Immagina di avere una lista di dati, come nomi di persone, e vuoi scrivere ciascuno su una nuova riga in un file.
Potresti prima preparare le stringhe e poi usarle con writelines.
# Lista di nomi
nomi = ["Alessia", "Giovanni", "Luca", "Martina"]
# Prepariamo la lista di stringhe, aggiungendo '\n' ad ogni nome
lines = [f"{nome}\n" for nome in nomi]
# Scriviamo nel file
with open("nomi.txt", "w") as file:
file.writelines(lines)
In questo esempio, usiamo una list comprehension per aggiungere il carattere speciale "\n" a ogni nome nella lista "nomi".
Questo trasforma ogni nome in una stringa che, quando scritta nel file, appare su una nuova riga.
Dopodiché, usiamo writelines per scrivere queste stringhe nel file `nomi.txt`.
L'intera lista viene scritta nel file con un unico comando.