Come eseguire comandi Unix nel tuo programma Python

Unix è un sistema operativo sviluppato nel 1969 presso AT & T Bell Labs da Ken Thompson e Dennis Ritchie. Ci sono molti comandi Unix interessanti che possiamo usare per svolgere diversi compiti. La domanda è, possiamo usare tali comandi direttamente all'interno di un programma Python? Questo è quello che ti mostrerò in questo tutorial.

Il comando Unix ls elenca tutti i file nella directory. Se metti ls come in uno script Python, questo è ciò che otterrai quando eseguirai il programma:

Traceback (ultima chiamata più recente): file "test.py", riga 1, in  ls NameError: nome 'ls' non è definito

Questo dimostra che l'interprete Python sta trattando ls come variabile e richiede che sia definito (cioè inizializzato) e non lo abbia trattato come un comando Unix.

os.system ()

Una soluzione a questo problema è l'utilizzo os.system () da Python os modulo.

Come menzionato nella documentazione, os.system ():

Esegue il comando (una stringa) in una subshell. Questo viene implementato chiamando il sistema di funzioni C standard () e presenta le stesse limitazioni.

Quindi, possiamo eseguire il ls comando in Python come segue:

import os os.system ('ls')

Ciò restituirà l'elenco dei file nella tua directory corrente, che è dove il tuo .py il programma si trova.

Facciamo un altro esempio. Se si desidera restituire la data e l'ora correnti, è possibile utilizzare il comando Unix Data come segue:

import os os.system ('date')

Nel mio caso, questo è ciò che ho ottenuto come risultato dello script di cui sopra:

Mar 24 maggio 17:29:20 CEST 2016

chiamata()

Sebbene os.system () funziona, non è raccomandato in quanto è considerato un po 'vecchio e deprecato. Una soluzione più raccomandata è Python sottoprocesso modulo Call (args) funzione. Come menzionato nella documentazione su questa funzione:

Esegui il comando descritto da args. Attendere il completamento del comando, quindi restituire l'attributo returncode.

Se vogliamo eseguire il ls Comando Unix usando questo metodo, possiamo fare quanto segue:

dalla chiamata di importazione di sottoprocesso ('ls')

Vediamo come possiamo restituire la data usando il sottoprocesso modulo, ma rendiamo l'esempio più interessante.

import subprocess time = subprocess.Popen ('date', stdout = subprocess.PIPE, stderr = subprocess.PIPE) output, err = time.communicate () stampa 'It is', output

L'esempio sopra può essere eseguito più semplicemente usando check_output (), come segue:

import subprocess time = subprocess.check_output ('date') stampa 'It is', time

L'output degli script di cui sopra è:

È il 24 maggio 19:14:22 CEST 2016

Gli esempi sopra mostrano la flessibilità nell'uso di diversi sottoprocesso funzioni e come possiamo passare i risultati alle variabili per eseguire ulteriori operazioni.

Conclusione

Come abbiamo visto in questo tutorial, i comandi Unix possono essere richiamati ed eseguiti usando il comando sottoprocesso modulo, che fornisce molta flessibilità quando si lavora con i comandi Unix attraverso le sue diverse funzioni. Puoi imparare di più su questo modulo e le sue diverse funzioni dalla documentazione di Python.