🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

Il Modulo `os` in Python

Codegrind Team•Sep 11 2024

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.