Cos’è il modulo del sistema operativo di Python e come lo usi?
Il modulo OS in Python fornisce l’accesso a funzioni specifiche del sistema per gestire il filesystem, i processi, lo scheduler, ecc. È necessario padroneggiare il sistema OS Python per scrivere applicazioni che si occupano di problemi del mondo reale. Questa guida discute alcuni dei concetti fondamentali e illustra come utilizzare il comando di sistema Python.
Caratteristiche del sistema operativo Python
Il sistema operativo funge da modo portatile di interagire con il sistema operativo sottostante. Offre accesso a nomi di file, argomenti della riga di comando, variabili di ambiente, parametri di processo e gerarchia del file system insieme ad altre funzionalità.

Questo modulo contiene anche due sottomoduli, il modulo os.sys e il modulo os.path. È possibile utilizzare le funzioni fornite dal modulo OS per eseguire un’ampia gamma di attività. Alcuni usi comuni includono l’esecuzione di comandi della shell, la gestione di file e directory, processi di spawn , ecc.
Introduzione al modulo OS
Il modo più semplice per esplorare il modulo del sistema operativo è tramite l’interprete. È possibile importare il modulo lì e utilizzare le funzioni di sistema senza scrivere il codice sorgente. Tuttavia, è necessario che Python sia installato per questo. Quindi vai avanti e installa Python sulla tua macchina locale.
Avvia l’interprete digitando python nel tuo terminale o nella shell dei comandi. Una volta aperto, importa il modulo del sistema operativo utilizzando la seguente istruzione.
>>> import os
È ora possibile accedere alle funzionalità fornite dal modulo OS, incluso il comando di sistema Python. Ad esempio, è possibile determinare la piattaforma di sistema utilizzando il comando name . L’esempio seguente mostra come richiamare i comandi di sistema esposti dal modulo del sistema operativo.
>>> os.name
Questa funzione controlla se alcuni moduli specifici del sistema operativo sono presenti e determina la piattaforma in base a ciò. Usa la funzione uname per ottenere informazioni dettagliate.
>>> os.uname()
Questo comando visualizza la piattaforma di sistema esatta insieme all’architettura della macchina, al rilascio e alle informazioni sulla versione. la funzione getcwd per recuperare la directory di lavoro corrente.
>>> os.getcwd()

È possibile modificare facilmente la directory di lavoro utilizzando il comando di sistema Python chdir . Passa la nuova posizione come parametro di stringa.
>>> os.chdir('/tmp')
La funzione mkdir del modulo OS rende semplice la creazione di nuove directory. Ci consente anche di creare cartelle ricorsive, il che significa che Python creerà tutte le directory mancanti che sono genitori della directory foglia.
>>> os.mkdir('new-dir')
il comando rmdir per eliminare le directory dalla directory di lavoro.
>>> os.rmdir('new-dir')
Esempi di comando di sistema Python
Il comando di sistema fornito dal modulo OS consente ai programmatori di eseguire i comandi della shell. Assicurati di definire il nome del comando come una stringa. Una volta chiamato il comando di sistema python, eseguirà il comando dato in una nuova subshell.
>>> cmd = 'date'
>>> os.system(cmd)

È possibile eseguire altre applicazioni autonome utilizzando lo stesso metodo. L’esempio seguente esegue l’ editor del terminale nano dalla shell Python.
>>> cmd = 'nano'
>>> os.system(cmd)
Il sistema operativo Python restituisce anche il codice di ritorno per ogni comando in esecuzione. I sistemi POSIX restituiscono 0 per l’esecuzione corretta e valori diversi da zero per indicare problemi.
Puoi utilizzare il sistema operativo in Python per eseguire tutto ciò che desideri. Ad esempio, se il tuo programma ha bisogno di leggere le informazioni sulla versione di un programma sulla macchina dell’utente, potresti fare qualcosa di simile a quanto segue.
>>> cmd = 'gcc --version'
>>> os.system(cmd)

L’esempio seguente esegue un semplice comando di shell che crea un nuovo file chiamato users.txt e lo popola con tutti gli utenti che hanno effettuato l’accesso. Molti programmi Python fanno queste cose.
>>> os.system('users > test')
Stiamo passando il nome del comando al sistema operativo come stringa. Puoi usare tutti i tipi di utili comandi da terminale allo stesso modo.
>>> os.system('ping -c 3 google.com')
È inoltre possibile utilizzare chiamate di sottoprocesso per eseguire comandi di sistema da Python. Ciò fornisce numerosi vantaggi aggiuntivi, tra cui un runtime più veloce, una migliore gestione degli errori, l’analisi dell’output e la piping dei comandi della shell. La documentazione ufficiale di Python raccomanda anche la chiamata di sottoprocesso su moduli precedenti come os.system e os.spawn .
>>> import subprocess
>>> subprocess.run(["ping","-c 3", "example.com"])

Gestione di file e directory tramite il modulo OS
Abbiamo mostrato come creare semplici file e directory usando il modulo del sistema operativo Python. E se volessi creare cartelle nidificate? Il sistema operativo si occupa anche di questo per noi programmatori. Ad esempio, i frammenti di seguito creano la cartella $ HOME / test / root / api . Creerà anche le directory principali necessarie se non sono disponibili.
>>> dirname = os.path.join(os.environ['HOME'], 'test', 'root', 'api')
>>> print(dirname)
>>> os.makedirs(dirname)
Per prima cosa, abbiamo recuperato la directory home utilizzando Environment e poi abbiamo unito i nomi delle cartelle tramite os.path.join . L’istruzione print mostra il nome della cartella e makedirs lo crea.

Possiamo visualizzare la nuova directory utilizzando il metodo listdir del modulo OS.
>>> os.chdir(os.path.join(os.environ['HOME'], 'test', 'root', 'api'))
>>> os.system('touch file1 file2 file3')
>>> os.listdir(os.environ['HOME'])
È possibile rinominare facilmente la directory api utilizzando il comando rename offerto dal modulo del sistema operativo. L’istruzione seguente rinomina questa directory api in test-api.
>>> os.rename('api', 'test-api')
le funzioni isfile e isdir del sistema operativo se il programma deve convalidare file o directory specifici.
>>> os.path.isfile('file1')
>>> os.path.isdir('file1')

Il modulo OS in Python consente inoltre agli sviluppatori di estrarre nomi di file e cartelle insieme alle estensioni di file. I frammenti di seguito illustrano l’uso di os.path.split e os.path.splitext a questo proposito.
>>> dir = os.path.join(os.environ['HOME'], 'test', 'root', 'api', 'file1.txt')
>>> dirname, basename = os.path.split(dir)
>>> print(dirname)
>>> print(basename)
Usa il codice seguente per estrarre estensioni come .txt o .mp3 dai nomi dei file.
>>> filename, extension = os.path.splitext(basename)
>>> print(filename)
>>> print(extension)
Uso vario del sistema operativo Python
Il modulo OS offre molte funzioni aggiuntive per la manipolazione di cose come i processi utente e il pianificatore di lavori. Ad esempio, è possibile ottenere rapidamente l’UID (ID utente) del processo corrente utilizzando la funzione getuid .
>>> os.getuid()
>>> os.getgid()
La funzione getgid restituisce l’ID di gruppo del processo in esecuzione. Usa getpid per ottenere il PID (ID processo) e getppid per ottenere l’ID processo genitore.
>>> os.getpid()
>>> os.getppid()

È inoltre possibile utilizzare il modulo del sistema operativo per modificare i permessi di file e directory dal programma Python. Usa la funzione chmod del sistema operativo per farlo.
>>> os.chmod('file1.txt', 0o444)
Questo comando modifica l’autorizzazione di file1.txt in 0444 . Usa 0o444 invece di 0444 per assicurarti che l’istruzione sia compatibile con entrambe le principali versioni di Python.
Sfrutta la potenza del sistema operativo Python
Il modulo OS di Python fornisce tutto ciò di cui hai bisogno per interagire con il sistema operativo sottostante. Una chiara comprensione del sistema operativo è necessaria per scrivere programmi veramente multipiattaforma. Abbiamo coperto alcune delle funzionalità principali fornite da questo modulo per aiutarti a iniziare. Provali al tuo ritmo e non dimenticare di armeggiare con loro.