Libreria
File e cartelle
Leggere e scrivere file, CSV e JSON; copiare, spostare e cercare file e cartelle; ZIP e formati.
Funzioni 81
a_csva_jsonabbellisci_jsonaggiungi_a_fileaggiungi_a_tabellacambia_cartellacambia_estensionecancella_cartellacancella_filecartella_casacartella_correntecartella_desktopcartella_dicartella_documenticartella_downloadcartella_programmacartella_scrivaniacartella_temporaneacerca_filecomprimicomprimi_zipconverti_csv_in_jsonconverti_json_in_csvcopia_cartellacopia_filecrea_cartellada_csvda_jsondata_modificadecomprimidimensione_cartelladimensione_filedimensione_leggibileduplica_filee_cartellae_fileelenca_cartelleelenca_fileelenca_zipelimina_cartellaelimina_fileesisteestensione_fileestrai_zipfile_temporaneoinfo_fileleggi_binarioleggi_byteleggi_con_codificaleggi_inileggi_jsonleggi_righeleggi_tabellaleggi_tomlleggi_xmlleggi_yamlmuovi_filenome_filenome_senza_estensionepercorso_completopercorso_relativoriconosci_codificarinomina_filescrivi_binarioscrivi_bytescrivi_con_codificascrivi_iniscrivi_jsonscrivi_righescrivi_tabellascrivi_tomlscrivi_xmlscrivi_yamlsposta_filesvuota_cartellatrova_attributotrova_noditrova_nodounisci_percorsiunisci_percorsovalida_json
elenca_file(cartella = ".", estensione = nulla, filtro = nulla)#
I nomi dei file di una cartella, in ordine alfabetico.
Il filtro usa * (qualunque testo) e ? (un carattere), senza distinguere maiuscole; più filtri si separano con ;. Per cercare anche nelle sottocartelle usa cerca_file.
stampa(elenca_file())elenca_file("foto", estensione = "png")stampa(elenca_file("foto", "*.jpg;*.png"))["applauso.wav", "backup.zip", "campanello.wav", "canzone.wav", "config.toml", "dati.txt", "esempio.leo", "foto.jpg", "foto.png", "gioco.ini", "impostazioni.json", "installatore.zip", "logo.png", "resoconto.pdf", "spesa.txt", "vecchio.txt", "vittoria.wav", "voti.csv", "voti.txt"] ["gita.jpg", "IMG_001.jpg", "mare.png"]
elenca_cartelle(cartella = ".", filtro = nulla)#
I nomi delle sottocartelle di una cartella, in ordine alfabetico.
per ogni c in elenca_cartelle() fai stampa(c) finestampa(elenca_cartelle(".", "livello_*"))album documenti foto progetto []
esiste(percorso)#
vero se il file o la cartella esiste.
se non esiste("punteggi.txt") allora scrivi_file("punteggi.txt", "") finecrea_cartella(percorso)#
Crea la cartella (e quelle che la contengono, se mancano).
Se esiste già non succede niente.
crea_cartella("salvataggi/livello1")leggi_righe(percorso)#
Le righe di un file di testo, come lista di testi (senza "a capo").
per ogni riga in leggi_righe("spesa.txt") fai stampa("- " + riga) fine- pane - latte - mele
aggiungi_a_file(percorso, testo, a_capo = vero)#
Aggiunge il testo in fondo al file (lo crea se manca).
Con a_capo = vero (il normale) il testo diventa una riga a sé (anche se il file non finiva a capo).
aggiungi_a_file("diario.txt", "Oggi ho imparato Leo")leggi_tabella(percorso, separatore = nulla, intestazione = vero, converti_numeri = vero)#
Legge un file CSV.
Con l'intestazione (la prima riga con i nomi delle colonne) ogni riga diventa un dizionario, altrimenti una lista. Il separatore (, ; o tabulazione) si indovina da solo; i numeri diventano numeri (anche "3,5" con il separatore ;).
per ogni r in leggi_tabella("voti.csv") fai stampa(r["nome"], r["voto"]) fineAda 30 Bruno 28 Carla 27
da_csv(testo, separatore = nulla, intestazione = vero, converti_numeri = vero)#
Come leggi_tabella, ma da un testo.
stampa(da_csv("nome;voto\nAda;30"))[{"nome": "Ada", "voto": 30}]scrivi_tabella(percorso, righe, separatore = ",", excel = falso)#
Scrive una tabella in un file CSV.
righe è una lista di dizionari (le chiavi diventano l'intestazione) o una lista di liste. Con excel = vero il file è pronto per l'Excel italiano: separatore ;, decimali con la virgola, UTF-8 con BOM (le lettere accentate si vedono giuste).
scrivi_tabella("voti.csv", [{"nome": "Ada", "voto": 30}, {"nome": "Bruno", "voto": 28}])a_csv(righe, separatore = ",", excel = falso)#
Come scrivi_tabella, ma restituisce il testo CSV invece di scriverlo.
stampa(a_csv([{"nome": "Ada", "voto": 30}]))nome,voto Ada,30
aggiungi_a_tabella(percorso, riga)#
Aggiunge una riga in fondo a un file CSV (lo crea se manca).
riga è un dizionario (le chiavi sono i nomi delle colonne) o una lista. Si usano il separatore e l'intestazione del file esistente.
aggiungi_a_tabella("voti.csv", {"nome": "Carla", "voto": 27})da_json(testo)#
Trasforma un testo JSON in valori Leo (dizionari, liste, numeri, testi...).
null diventa nulla, true/false diventano vero/falso.
stampa(da_json("\{\"nome\": \"Ada\", \"voti\": [30, 28]\}")["nome"])Ada
a_json(valore, rientro = nulla)#
Trasforma un valore Leo in testo JSON.
Con rientro (un numero di spazi) il testo va a capo ed è più facile da leggere.
stampa(a_json({"nome": "Ada", "voti": [30, 28]})){"nome": "Ada", "voti": [30, 28]}leggi_json(percorso, predefinito)#
Legge un file JSON e lo trasforma in valori Leo.
Se il file non c'è ancora e hai dato predefinito, restituisce quello invece di un errore.
variabile impostazioni = leggi_json("impostazioni.json")variabile punti = leggi_json("punti.json", predefinito = {})scrivi_json(percorso, valore, rientro = 2)#
Salva un valore Leo in un file JSON.
scrivi_json("punteggi.json", {"Ada": 120, "Bruno": 95})e_file(percorso)#
vero se il percorso esiste ed è un file (non una cartella).
se e_file("voti.csv") allora stampa("trovato") finetrovato
e_cartella(percorso)#
vero se il percorso esiste ed è una cartella.
se non e_cartella("foto") allora crea_cartella("foto") finecopia_file(origine, destinazione, sovrascrivi = falso)#
Copia un file e restituisce il percorso della copia.
Se destinazione è una cartella, la copia va dentro con lo stesso nome; le cartelle mancanti si creano. Se la copia esiste già serve sovrascrivi = vero.
copia_file("voti.csv", "salvataggi/voti_copia.csv")copia_cartella(origine, destinazione, sovrascrivi = falso)#
Copia una cartella con tutto il contenuto.
Restituisce il percorso della copia. Se la destinazione esiste già serve sovrascrivi = vero (i file con lo stesso nome vengono sostituiti, gli altri restano).
copia_cartella("progetto", "backup/progetto")sposta_file(origine, destinazione, sovrascrivi = falso)#
Sposta un file (o una cartella) e restituisce il nuovo percorso.
Se destinazione è una cartella esistente, ci finisce dentro con lo stesso nome.
stampa(sposta_file("foto.png", "album"))album/foto.png
rinomina_file(percorso, nuovo_nome)#
Cambia il nome a un file (o a una cartella), che resta dov'è.
nuovo_nome è solo il nome, senza cartelle. Restituisce il nuovo percorso.
stampa(rinomina_file("foto/IMG_001.jpg", "mare.jpg"))foto/mare.jpg
elimina_file(percorso, definitivo = falso)#
Mette un file nel cestino.
Con definitivo = vero lo elimina per sempre. Se il cestino non si può usare, Leo si ferma con un errore invece di eliminare di nascosto. I file di sistema e le cartelle importanti sono protetti.
elimina_file("vecchio.txt")elimina_cartella(percorso, definitivo = falso)#
Mette nel cestino una cartella con tutto il contenuto.
Con definitivo = vero la elimina per sempre. La cartella personale, Documenti, Desktop, le cartelle di sistema e quella in cui stai lavorando sono protette.
elimina_cartella("prove")svuota_cartella(percorso, definitivo = falso)#
Mette nel cestino tutto il contenuto della cartella, che resta vuota.
Restituisce quanti elementi ha tolto.
svuota_cartella("temporanei")cerca_file(cartella = ".", filtro = "*", nascosti = falso, massimo = nulla)#
Cerca i file anche nelle sottocartelle.
Restituisce i percorsi in ordine alfabetico. Il filtro usa * (qualunque testo) e ? (un carattere); più filtri si separano con ;. I file e le cartelle nascosti (che iniziano con un punto) si saltano, salvo nascosti = vero.
cerca_file("documenti", "*.txt;*.md")dimensione_file(percorso)#
Quanti byte occupa un file.
stampa(dimensione_leggibile(dimensione_file("foto.jpg")))74 byte
dimensione_cartella(percorso)#
Quanti byte occupano tutti i file della cartella e delle sottocartelle.
stampa(dimensione_leggibile(dimensione_cartella("foto")))222 byte
dimensione_leggibile(byte)#
Una quantità di byte scritta per le persone, con la virgola.
stampa(dimensione_leggibile(512))stampa(dimensione_leggibile(1536))stampa(dimensione_leggibile(3000000))512 byte 1,5 KB 2,9 MB
data_modifica(percorso)#
La data (con l'ora) dell'ultima modifica di un file o di una cartella.
stampa("Salvato il", data_modifica("voti.csv"))Salvato il 01/10/2026 10:19:31
info_file(percorso)#
Un dizionario con le informazioni su un file o una cartella.
Chiavi: "nome", "estensione", "cartella", "percorso" (completo), "tipo" ("file" o "cartella"), "dimensione" (byte), "data_modifica".
info_file("voti.csv")["dimensione"]cartella_corrente()#
Il percorso completo della cartella in cui sta lavorando il programma.
I percorsi relativi (come "voti.csv") partono da qui.
stampa(cartella_corrente())/tmp/rif_leo_4cwll3bz
cambia_cartella(percorso)#
Cambia la cartella di lavoro; restituisce il suo percorso completo.
Da quel momento i percorsi relativi partono dalla nuova cartella.
cambia_cartella(cartella_documenti())unisci_percorso(parti...)#
Unisce cartelle e nome del file con il separatore giusto per il sistema.
Accetta anche una lista.
unisci_percorso(cartella_documenti(), "leo", "voti.csv")nome_file(percorso)#
Solo il nome finale del percorso, senza le cartelle.
stampa(nome_file("foto/estate/mare.jpg"))mare.jpg
nome_senza_estensione(percorso)#
Il nome del file senza cartelle e senza estensione.
stampa(nome_senza_estensione("foto/mare.jpg"))mare
estensione_file(percorso)#
L'estensione del file in minuscolo, senza il punto ("" se non c'è).
stampa(estensione_file("mare.JPG"))stampa(estensione_file("leggimi"))jpg
cambia_estensione(percorso, estensione)#
Il percorso con un'altra estensione (il file non cambia).
stampa(cambia_estensione("voti.csv", "json"))voti.json
cartella_di(percorso)#
La cartella che contiene il file ("." se il percorso è solo un nome).
stampa(cartella_di("foto/estate/mare.jpg"))foto/estate
percorso_completo(percorso)#
Il percorso assoluto, a partire dalla radice del disco.
stampa(percorso_completo("voti.csv"))voti.csv
percorso_relativo(percorso, base = ".")#
Il percorso visto dalla cartella base.
stampa(percorso_relativo("/casa/ada/foto/mare.jpg", "/casa/ada"))foto/mare.jpg
cartella_casa()#
La tua cartella personale (per esempio "C:\Users\ada" o "/home/ada").
unisci_percorso(cartella_casa(), "appunti.txt")cartella_documenti()#
La cartella Documenti dell'utente (anche se è spostata su OneDrive).
scrivi_file(unisci_percorso(cartella_documenti(), "nota.txt"), "Ciao")cartella_desktop()#
La cartella del Desktop (la Scrivania).
copia_file("resoconto.pdf", cartella_desktop())cartella_download()#
La cartella dei file scaricati (Download).
elenca_file(cartella_download(), "*.pdf")cartella_programma()#
La cartella in cui si trova il programma .leo che è in esecuzione.
Serve per trovare i file che stanno accanto al programma, da qualunque cartella lo si avvii.
leggi_file(unisci_percorso(cartella_programma(), "dati.txt"))file_temporaneo(estensione = "")#
Crea un file vuoto nella cartella temporanea e ne restituisce il percorso.
Il file viene eliminato quando il programma finisce.
variabile t = file_temporaneo("txt")scrivi_file(t, "prova")cartella_temporanea()#
Crea una cartella vuota nuova per i file di passaggio e ne restituisce il percorso.
La cartella (con tutto il contenuto) viene eliminata quando il programma finisce.
variabile lavoro = cartella_temporanea()cancella_file(percorso, definitivo = falso)#
Sinonimo di elimina_file.
elimina_file(percorso, definitivo = falso): mette un file nel cestino.
Con definitivo = vero lo elimina per sempre. Se il cestino non si può usare, Leo si ferma con un errore invece di eliminare di nascosto. I file di sistema e le cartelle importanti sono protetti.
elimina_file("vecchio.txt")cancella_cartella(percorso, definitivo = falso)#
Sinonimo di elimina_cartella.
elimina_cartella(percorso, definitivo = falso): mette nel cestino una cartella con tutto il contenuto.
Con definitivo = vero la elimina per sempre. La cartella personale, Documenti, Desktop, le cartelle di sistema e quella in cui stai lavorando sono protette.
elimina_cartella("prove")muovi_file(origine, destinazione, sovrascrivi = falso)#
Sinonimo di sposta_file.
sposta_file(origine, destinazione, sovrascrivi = falso): sposta un file (o una cartella) e restituisce il nuovo percorso.
Se destinazione è una cartella esistente, ci finisce dentro con lo stesso nome.
stampa(sposta_file("foto.png", "album"))album/foto.png
duplica_file(origine, destinazione, sovrascrivi = falso)#
Sinonimo di copia_file.
copia_file(origine, destinazione, sovrascrivi = falso): copia un file e restituisce il percorso della copia.
Se destinazione è una cartella, la copia va dentro con lo stesso nome; le cartelle mancanti si creano. Se la copia esiste già serve sovrascrivi = vero.
copia_file("voti.csv", "salvataggi/voti_copia.csv")unisci_percorsi(parti...)#
Sinonimo di unisci_percorso.
unisci_percorso(parti...): unisce cartelle e nome del file con il separatore giusto per il sistema.
Accetta anche una lista.
unisci_percorso(cartella_documenti(), "leo", "voti.csv")cartella_scrivania()#
Sinonimo di cartella_desktop.
cartella_desktop(): la cartella del Desktop (la Scrivania).
copia_file("resoconto.pdf", cartella_desktop())scrivi_righe(percorso, righe)#
Scrive una lista di righe in un file di testo, una per riga.
I valori che non sono testi si scrivono come li mostra stampa. Il contrario è leggi_righe.
scrivi_righe("spesa.txt", ["pane", "latte", "uova"])leggi_binario(percorso)#
I byte di un file qualunque (immagine, suono...) come lista di numeri da 0 a 255.
variabile b = leggi_binario("logo.png")stampa(b[0..3])[137, 80, 78, 71]
scrivi_binario(percorso, dati)#
Scrive in un file una lista di byte (numeri interi da 0 a 255).
Il contrario di leggi_binario.
scrivi_binario("copia.png", leggi_binario("logo.png"))riconosci_codifica(percorso)#
La codifica di un file di testo: "utf-8", "utf-8-bom", "utf-16", "utf-32", "ansi" o "binario".
"ansi" è la codifica classica di Windows (per
stampa(riconosci_codifica("voti.csv"))utf-8
leggi_con_codifica(percorso, codifica)#
Legge un file di testo in una codifica precisa.
Di solito basta leggi_file, che la riconosce da solo; questa serve per i casi speciali. Codifiche: "utf-8", "utf-8-bom", "utf-16", "utf-32", "ansi", "latin1", "latin9", "ascii", "dos".
leggi_con_codifica("vecchio.txt", "dos")scrivi_con_codifica(percorso, testo, codifica = "utf-8", a_capo_windows = falso)#
Scrive un testo in una codifica precisa.
Con a_capo_windows = vero le righe finiscono con "\r\n" come nel Blocco note.
variabile testo = "Leo parla italiano" # valore di provascrivi_con_codifica("per_excel.csv", testo, "utf-8-bom")leggi_ini(percorso, converti = vero)#
Legge un file di impostazioni INI come dizionario di sezioni.
Ogni [sezione] diventa un dizionario chiave: valore; le chiavi fuori da ogni sezione vanno in "generale". Con converti = vero numeri e vero/falso (anche true/false, sì/no) diventano valori Leo.
leggi_ini("gioco.ini")["grafica"]["larghezza"]scrivi_ini(percorso, dati)#
Salva un dizionario di sezioni in un file INI.
dati è {"sezione": {"chiave": valore}}; i valori semplici fuori da una sezione vanno in [generale].
scrivi_ini("gioco.ini", {"grafica": {"larghezza": 800, "schermo_intero": falso}})leggi_toml(percorso)#
Legge un file TOML (come progetto.toml) e lo trasforma in un dizionario Leo.
variabile config = leggi_toml("config.toml")scrivi_toml(percorso, dati)#
Salva un dizionario Leo in un file TOML.
I valori nulla si saltano (TOML non li conosce).
scrivi_toml("config.toml", {"titolo": "Gioco", "finestra": {"larghezza": 800}})comprimi_zip(sorgente, archivio)#
Comprime un file, una cartella o una lista di percorsi in un archivio ZIP.
Le cartelle entrano con tutto il contenuto. Se l'archivio esiste già viene sostituito. Restituisce quanti file ha compresso.
comprimi_zip(["voti.csv", "foto"], "backup.zip")elenca_zip(archivio)#
I nomi dei file contenuti in un archivio ZIP, senza estrarli.
per ogni n in elenca_zip("backup.zip") fai stampa(n) finevoti.csv
estrai_zip(archivio, cartella = ".", sovrascrivi = falso)#
Estrae un archivio ZIP nella cartella e restituisce i file estratti.
Se un file esiste già serve sovrascrivi = vero (prima di scrivere si controlla tutto). Gli archivi pericolosi (percorsi che escono dalla cartella, dimensioni esagerate) vengono rifiutati.
estrai_zip("backup.zip", "ripristino")leggi_xml(testo)#
Legge un testo XML e restituisce l'albero dei nodi.
Ogni nodo è un dizionario con tag (il nome), attributi (un dizionario), testo (il testo diretto) e figli (la lista dei nodi dentro). Per un file: leggi_xml(leggi_file("dati.xml")).
stampa(leggi_xml("<libro id=\"7\"><titolo>Pinocchio</titolo></libro>")["figli"][0]["testo"])Pinocchio
trova_nodi(nodo, tag)#
La lista di tutti i nodi con quel nome dentro l'albero (anche il nodo stesso).
stampa(trova_nodi(albero, "titolo"))trova_nodo(nodo, tag, predefinito = nulla)#
Il primo nodo con quel nome, o predefinito se non c'è.
trova_nodo(albero, "titolo")["testo"]trova_attributo(nodo, nome, predefinito = nulla)#
Il valore di un attributo del nodo, o predefinito.
stampa(trova_attributo(nodo, "id"))scrivi_xml(nodo, rientro = vero)#
Trasforma un albero di nodi in un testo XML (l'inverso di leggi_xml).
Con rientro = vero il testo va a capo con i rientri. Per salvarlo: scrivi_file("dati.xml", scrivi_xml(albero)).
scrivi_xml({"tag": "libro", "attributi": {"id": "7"}, "testo": "", "figli": []}, rientro = falso)leggi_yaml(percorso)#
Legge un file YAML (come impostazioni.yaml) e restituisce dizionari e liste.
Capisce lo YAML di tutti i giorni (vedi da_yaml).
variabile config = leggi_yaml("config.yaml")scrivi_yaml(percorso, dati)#
Salva dizionari e liste in un file YAML (l'inverso di leggi_yaml).
scrivi_yaml("config.yaml", {"nome": "Ada", "linguaggi": ["Leo", "Python"]})converti_csv_in_json(testo, separatore = nulla, rientro = 2)#
Trasforma un testo CSV in un testo JSON.
La prima riga del CSV sono i nomi delle colonne; ogni riga dopo diventa un dizionario.
stampa(converti_csv_in_json("nome,voto\nAda,30"))[
{
"nome": "Ada",
"voto": 30
}
]converti_json_in_csv(testo, separatore = ",")#
Trasforma un testo JSON (lista di dizionari) in un testo CSV.
stampa(converti_json_in_csv("[\{\"nome\": \"Ada\", \"voto\": 30\}]"))nome,voto Ada,30
abbellisci_json(testo, rientro = 2)#
Rimette in ordine un testo JSON con i rientri, per leggerlo meglio.
abbellisci_json("\{\"nome\": \"Ada\", \"voti\": [30, 28]\}")valida_json(testo)#
Controlla se un testo è JSON valido.
Restituisce un dizionario {"valido": vero/falso, "messaggio": "..."}: se non è valido, il messaggio spiega dov'è l'errore.
stampa(valida_json("\{\"a\": 1\}")["valido"])vero
comprimi(sorgente, archivio)#
Sinonimo di comprimi_zip.
comprimi_zip(sorgente, archivio): comprime un file, una cartella o una lista di percorsi in un archivio ZIP.
Le cartelle entrano con tutto il contenuto. Se l'archivio esiste già viene sostituito. Restituisce quanti file ha compresso.
comprimi_zip(["voti.csv", "foto"], "backup.zip")decomprimi(archivio, cartella = ".", sovrascrivi = falso)#
Sinonimo di estrai_zip.
estrai_zip(archivio, cartella = ".", sovrascrivi = falso): estrae un archivio ZIP nella cartella e restituisce i file estratti.
Se un file esiste già serve sovrascrivi = vero (prima di scrivere si controlla tutto). Gli archivi pericolosi (percorsi che escono dalla cartella, dimensioni esagerate) vengono rifiutati.
estrai_zip("backup.zip", "ripristino")leggi_byte(percorso)#
Sinonimo di leggi_binario.
leggi_binario(percorso): i byte di un file qualunque (immagine, suono...) come lista di numeri da 0 a 255.
variabile b = leggi_binario("logo.png")stampa(b[0..3])[137, 80, 78, 71]
scrivi_byte(percorso, dati)#
Sinonimo di scrivi_binario.
scrivi_binario(percorso, dati): scrive in un file una lista di byte (numeri interi da 0 a 255).
Il contrario di leggi_binario.
scrivi_binario("copia.png", leggi_binario("logo.png"))