Comando di sistema Python – os.system(), subprocess.call()

In questo tutorial impareremo riguardo al Comando di Sistema Python. In precedenza abbiamo appreso riguardo ai Numeri Casuali Python.

Comando di Sistema Python

Durante la creazione di un programma in python, potresti aver bisogno di eseguire alcuni comandi shell per il tuo programma. Ad esempio, se utilizzi l’IDE Pycharm, potresti notare che c’è l’opzione per condividere il tuo progetto su github. E probabilmente sai che il trasferimento di file è fatto tramite git, che viene utilizzato tramite la riga di comando. Quindi, Pycharm esegue alcuni comandi shell in background per farlo. Tuttavia, in questo tutorial impareremo alcune nozioni di base sull’esecuzione dei comandi shell dal tuo codice python.

Funzione os.system() Python

Possiamo eseguire il comando di sistema utilizzando la funzione os.system() . Secondo il documento ufficiale, è stato detto che

Questo è implementato chiamando la funzione Standard C system(), e ha le stesse limitazioni.

Tuttavia, se il comando genera un output, viene inviato allo standard output dell’interprete. Utilizzare questo comando non è raccomandato. Nel codice seguente cercheremo di conoscere la versione di git utilizzando il comando di sistema git --version.

import os

cmd = "git --version"

returned_value = os.system(cmd)  # returns the exit code in unix
print('returned value:', returned_value)

L’output seguente è stato trovato su ubuntu 16.04 dove git è già installato.

git version 2.14.2
returned value: 0

Si noti che non stiamo stampando l’output del comando di versione di git sulla console, viene stampato perché la console è lo standard output in questo caso.

Funzione subprocess.call() di Python

Nella sezione precedente, abbiamo visto che la funzione os.system() funziona correttamente. Ma non è il modo raccomandato per eseguire comandi di shell. Utilizzeremo il modulo subprocess di Python per eseguire comandi di sistema. Possiamo eseguire comandi di shell utilizzando la funzione subprocess.call(). Vediamo il codice seguente che è equivalente al codice precedente.

import subprocess

cmd = "git --version"

returned_value = subprocess.call(cmd, shell=True)  # returns the exit code in unix
print('returned value:', returned_value)

E l’output sarà lo stesso anche.

Funzione subprocess.check_output() di Python

Fino ad ora, abbiamo eseguito i comandi di sistema con l’aiuto di Python. Ma non abbiamo potuto manipolare l’output prodotto da quei comandi. Utilizzando la funzione subprocess.check_output() possiamo memorizzare l’output in una variabile.

import subprocess

cmd = "date"

# restituisce l'output come stringa di byte
returned_output = subprocess.check_output(cmd)

# utilizzando la funzione decode() per convertire la stringa di byte in stringa
print('Current date is:', returned_output.decode("utf-8"))

Produrrà un output simile al seguente

Current date is: Thu Oct  5 16:31:41 IST 2017

Quindi, nelle sezioni precedenti abbiamo discusso delle idee di base sull’esecuzione dei comandi di sistema Python. Ma non c’è limite nell’apprendimento. Se lo desideri, puoi approfondire ulteriormente l’argomento Comandi di Sistema Python utilizzando il modulo subprocess dalla documentazione ufficiale.

Source:
https://www.digitalocean.com/community/tutorials/python-system-command-os-subprocess-call