Esegui il comando Bash in Python
-
Esegui comandi Bash in Python usando il metodo
run()
del modulosubprocess
-
Esegui comandi Bash in Python usando il metodo
Popen()
del modulosubprocess
Questo tutorial spiegherà vari modi per eseguire i comandi bash in Python. Bash è un interprete della shell o del linguaggio di comando utilizzato nei sistemi operativi Linux e Unix. E il comando bash è un’istruzione inviata da un utente al sistema operativo per eseguire un’attività specifica, come il comando cd
per cambiare la directory corrente, il comando mkd
per creare una nuova directory e il comando ls
per elenca file e sottodirectory in una directory, ecc.
Esegui comandi Bash in Python usando il metodo run()
del modulo subprocess
Il metodo run()
del modulo subprocess
accetta il comando passato come una stringa. Per ottenere l’output o l’errore di output del comando, dovremmo impostare l’argomento stdout
e l’argomento stderr
su PIPE
. Il metodo run
restituisce un processo completato contenente stdout
, stderr
e returncode
come attributi.
Il codice di esempio mostra come utilizzare il metodo run()
per eseguire un comando bash in Python.
from subprocess import PIPE
comp_process = subprocess.run("ls", stdout=PIPE, stderr=PIPE)
print(comp_process.stdout)
Esegui comandi Bash in Python usando il metodo Popen()
del modulo subprocess
Il metodo Popen()
del modulo subprocess
ha funzionalità simili al metodo run()
, ma è difficile da usare. Il metodo Popen()
, a differenza del metodo run()
, non restituisce un oggetto processo completato come output, e il processo avviato dal metodo Popen()
deve essere gestito separatamente, il che lo rende difficile da uso.
Invece del processo completato, il metodo Popen()
restituisce un oggetto di processo come output. Il processo restituito deve essere terminato utilizzando il metodo process.kill()
o process.terminate()
.
Come il metodo run()
, dobbiamo impostare gli argomenti stdout
e stderr
di Popen()
per ottenere l’output e l’errore del comando. Inoltre, è possibile accedere all’output e all’errore tramite l’oggetto processo restituito utilizzando il metodo process.communicate
.
L’esempio di codice seguente mostra come eseguire un comando bash usando il metodo Popen()
e come ottenere i valori stdout
e stderr
e poi terminare il processo in Python:
from subprocess import PIPE
process = subprocess.Popen("ls", stdout=PIPE, stderr=PIPE)
output, error = process.communicate()
print(output)
process.kill