Il Modulo `os` in Python
Il modulo os
in Python offre una vasta gamma di funzionalitĂ per interagire con il sistema operativo. Con os
, puoi gestire file e directory, accedere alle variabili d’ambiente, eseguire comandi di sistema e molto altro. Questo lo rende uno strumento essenziale per scrivere programmi Python che necessitano di interagire con il filesystem o con il sistema operativo in generale.
In questo articolo esploreremo le funzionalitĂ piĂą utili del modulo os
, fornendo esempi pratici su come utilizzarle.
Importare il Modulo os
Per iniziare a lavorare con il modulo os
, devi importarlo nel tuo programma:
import os
1. Gestione del File System
a. Ottenere la Directory di Lavoro Corrente
La funzione os.getcwd()
restituisce il percorso assoluto della directory di lavoro corrente, ovvero la directory in cui si trova il programma in esecuzione.
import os
current_directory = os.getcwd()
print(f"Directory corrente: {current_directory}")
b. Cambiare la Directory di Lavoro
Puoi cambiare la directory di lavoro con os.chdir()
, passando il percorso della nuova directory.
import os
os.chdir("/percorso/della/nuova/directory")
print(f"Nuova directory di lavoro: {os.getcwd()}")
c. Creare una Nuova Directory
Per creare una nuova directory, usa os.mkdir()
per creare una singola directory o os.makedirs()
per creare piĂą directory nidificate.
# Creare una singola directory
os.mkdir("nuova_directory")
# Creare piĂą directory nidificate
os.makedirs("dir_principale/subdir")
d. Rimuovere una Directory
Puoi rimuovere una directory vuota con os.rmdir()
, oppure rimuovere una gerarchia di directory con os.removedirs()
.
# Rimuovere una singola directory vuota
os.rmdir("nuova_directory")
# Rimuovere directory nidificate
os.removedirs("dir_principale/subdir")
e. Listare i File in una Directory
La funzione os.listdir()
restituisce una lista di file e directory presenti in una directory specificata. Se non viene specificato alcun percorso, restituisce il contenuto della directory corrente.
import os
file_e_directory = os.listdir(".")
print(file_e_directory)
f. Verificare l’Esistenza di File o Directory
Puoi usare os.path.exists()
per verificare se un file o una directory esiste.
percorso = "file.txt"
if os.path.exists(percorso):
print(f"{percorso} esiste.")
else:
print(f"{percorso} non esiste.")
g. Unire Percorsi in Modo Sicuro
Il modulo os.path
offre la funzione os.path.join()
per unire in modo sicuro piĂą parti di un percorso, indipendentemente dal sistema operativo.
import os
percorso_completo = os.path.join("dir_principale", "subdir", "file.txt")
print(percorso_completo) # Output: dir_principale/subdir/file.txt
Questa funzione è particolarmente utile perché gestisce automaticamente i separatori di percorso corretti per il sistema operativo (ad esempio, /
su Unix e \
su Windows).
2. Gestione dei File
a. Rinominare un File o una Directory
Per rinominare un file o una directory, usa os.rename()
, passando il nome attuale e il nuovo nome.
os.rename("vecchio_nome.txt", "nuovo_nome.txt")
b. Rimuovere un File
Puoi eliminare un file con os.remove()
.
os.remove("file_da_eliminare.txt")
3. Variabili d’Ambiente
Le variabili d’ambiente contengono informazioni sulla configurazione del sistema. Puoi accedere, impostare o rimuovere variabili d’ambiente utilizzando os
.
a. Ottenere il Valore di una Variabile d’Ambiente
Usa os.getenv()
per ottenere il valore di una variabile d’ambiente.
utente = os.getenv("USER") # Su Windows puoi usare "USERNAME"
print(f"Utente: {utente}")
b. Impostare una Variabile d’Ambiente
Puoi impostare una variabile d’ambiente usando os.environ
.
os.environ["NUOVA_VAR"] = "valore"
print(os.getenv("NUOVA_VAR")) # Output: valore
c. Rimuovere una Variabile d’Ambiente
Per rimuovere una variabile d’ambiente, usa os.unsetenv()
(o su alcune versioni di Python, puoi semplicemente usare del
su os.environ
).
del os.environ["NUOVA_VAR"]
4. Eseguire Comandi di Sistema
Il modulo os
ti permette di eseguire comandi di sistema direttamente dal tuo script Python utilizzando os.system()
.
Esempio di Comando di Sistema
import os
# Esegui un comando di sistema (ad esempio, 'ls' su Unix o 'dir' su Windows)
os.system("ls")
Limitazioni di os.system()
La funzione os.system()
esegue il comando ma non cattura l’output. Se vuoi catturare l’output del comando, è consigliabile usare il modulo subprocess
al posto di os.system()
.
5. Permessi e Attributi di File
a. Cambiare i Permessi di un File
Puoi cambiare i permessi di un file usando os.chmod()
. I permessi devono essere specificati in forma numerica (ottale).
# Rende il file leggibile e scrivibile per l'utente, leggibile per gli altri
os.chmod("file.txt", 0o644)
b. Ottenere Attributi di un File
Il metodo os.stat()
restituisce informazioni dettagliate su un file, come dimensioni, data di creazione e permessi.
stat = os.stat("file.txt")
print(f"Dimensioni: {stat.st_size} byte")
print(f"Ultima modifica: {stat.st_mtime}")
6. Moduli Correlati a os
Il modulo os
lavora spesso in combinazione con altri moduli, come shutil
per operazioni avanzate sui file e directory, e subprocess
per eseguire e gestire comandi esterni.
a. Copiare o Spostare File con shutil
Il modulo shutil
fornisce funzioni di alto livello per operazioni su file e directory, come copiare e spostare file.
import shutil
# Copiare un file
shutil.copy("file.txt", "backup_file.txt")
# Spostare un file
shutil.move("backup_file.txt", "nuova_posizione/backup_file.txt")
b. Eseguire Comandi Esterni con subprocess
Il modulo subprocess
è più avanzato di os.system()
e ti permette di catturare l’output dei comandi eseguiti.
import subprocess
risultato = subprocess.run(["ls", "-l"], capture_output=True, text=True)
print(risultato.stdout)
Conclusione
Il modulo os
è uno strumento potente che consente di interagire con il sistema operativo direttamente da Python. Che tu stia manipolando file e directory, accedendo a variabili d’ambiente o eseguendo comandi di sistema, os
offre una vasta gamma di funzionalitĂ per semplificare le tue operazioni.