Eseguire comandi shell con Python

di Lorenzo Neri

Ti sei sempre chiesto se sia possibile eseguire comandi shell con Python? La risposta è sì e in questo articolo ti spiego come fare!

Python torna parecchio comodo: è un linguaggio di programmazione che permette di dare vita a script di varie utilità in pochissimo tempo. Non per nulla su questo blog puoi trovare un’intera categoria dedicata ad esso: la trovi proprio qui.

E in questo articolo in particolare come ti dicevo poco fa, cercheremo di capire come sia possibile eseguire comandi shell, quindi da terminale proprio grazie a Python: ma prima permettimi di presentarmi.

Il mio nome è Lorenzo Neri e sono un informatico: mi occupo di realizzare contenuti che aiutino persone come te a padroneggiare l’arte del nuovo millennio, l’informatica!

Devi sapere che questo articolo così come tanti altri sono frutto dei miei sbagli nel corso della mia vita lavorativa: poi però a un certo punto ho deciso di cambiare rotta.

Come? Documentando.

Documentando con vari articoli che possano aiutare persone come te che mi stai leggendo a risolvere gli stessi problemi che ho incontrato io.

Comandi shell: l’ashell se la conosci, torna pratica!

Una delle competenze che ti vorrei suggerire di sviluppare nel corso della tua vita, è quella di imparare ad usare la command line interface: se la conosci torna davvero pratica!

Senza andare troppo sul tecnichese, mi riferisco a tutta quella serie di comandi che possiamo lanciare da terminale: ti posso assicurare che se hai modo di familiarizzarci, puoi risparmiare parecchio tempo!

Non per nulla, ho scritto un articolo in merito proprio qui, ma allora perché mai eseguire i comandi shell con Python? Beh, torna comodo per parecchie cose.

Come si fa? Abbiamo prima di tutto bisogno di sfruttare il pacchetto “os”.

Eseguire i comandi shell con Python grazie al pacchetto os

Il pacchetto os, contiene al suo interno diversi strumenti, fra cui la possibilità di lanciare comandi shell direttamente nel codice Python.

La facciamo semplice con un esempio:

import os
esecuzione = os.popen("ls Desktop")
risultato = esecuzione.read()

Andiamo un passo per volta.

Avrai notato che ho usato il metodo “popen”. Questo metodo, permette letteralmente di aprire una pipe direttamente sulla shell. Questo significa una cosa molto pratica per noi: abbiamo diretto accesso allo stream generato dai comandi lanciati.

E di fatto, per leggere il contenuto dell’esecuzione, quindi il risultato, eseguo la “read”.

Se eseguissi la “print”, quindi la stampa a video della variabile “risultato”, mi apparirebbero tutti i file presenti sul mio Desktop.

… Se ti stessi chiedendo perché, è perché nella “popen” ho lanciato il comando che permette di listare i file sul desktop, ecco.

Quindi, facendo un passo indietro, ma necessario, il metodo “popen” prevede come argomento che cosa? Naturalmente il comando che sei intenzionato a lanciare da terminale.

P.s. Se ti stessi chiedendo cosa puoi farci di più, beh… Quasi tutto. Puoi parametrizzarlo, lanciarlo da remoto, lanciarlo tramite un bot TelegramPuoi farci un po’ ciò che vuoi!

Continua a scoprire di più con questi articoli!

Lascia un commento

Questo sito potrebbe fare uso di cookie e siccome l'UE mi obbliga a fartelo presente, eccoti il classico banner dove puoi decidere come gestirli. Accetta Leggi di più