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, inls 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.
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
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.
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.