Come usare il sottoprocesso di Python con i tubi?

Come usare il sottoprocesso di Python con i tubi?
Python è il linguaggio di alto livello più comune perfetto per i principianti. È utile per l'apprendimento automatico, lo sviluppo web e le altre funzionalità. È uno dei linguaggi di programmazione più semplici e accessibili per aiutare i programmatori a scrivere un codice chiaro, preciso e semplice. Fornisce molte funzioni integrate, metodi di facile comprensione e diversi sottoprocessi che consentono all'utente di eseguire comandi Linux, C, C ++ o Java direttamente da Python. Questo articolo discuterà dell'uso dei sottoprocessi in Python e spiegherà come tali sottoprocessi possono essere combinati con i tubi. Quindi iniziamo.

La documentazione ufficiale di Python fornisce una spiegazione dettagliata del sottoprocesso in Python e come utilizzare il sottoprocesso di Python con i tubi ed è utile per la comprensione e lo sviluppo. Tuttavia, la documentazione completa può essere un po 'schiacciante per i principianti. Inoltre, la sintassi potrebbe variare da una versione a un'altra versione di Python, che può confondere i principianti.

Quindi, abbiamo una soluzione per te, e qui spieghiamo il processo passo-passo dell'uso del sottoprocesso di Python con i tubi. Spiegheremo il processo con l'aiuto di esempi, quindi andiamo oltre per vedere gli esempi ma, prima, vediamo cosa è una pipa per un sottoprocesso in Python. Il tubo in Python viene utilizzato per inviare o ricevere dati da un programma in esecuzione come sottoprocesso in Python. Per fare ciò, possiamo usare una combinazione di tubo che sta fondamentalmente creando il tubo, a forchetta viene utilizzato per creare il sottoprocesso nel programma, dup2 viene utilizzato per forzare il sottoprocesso a utilizzare il tubo come canale di input e output standard e infine, Exec viene utilizzato per eseguire o eseguire il nuovo programma. Inoltre, Popen e Pclose vengono utilizzati per aprire o chiudere il programma, rispettivamente.

Il vantaggio di usare Popen e Pclose è che suggerisce un'interfaccia semplice e facile da usare. Tuttavia, non fornisce molta flessibilità perché utilizza direttamente funzioni di basso livello. Vediamo gli esempi di seguito.

Esempio 1:

Il primo esempio spiegherà come codificare il comando che contiene un tubo e un reindirizzamento. Vediamo l'esempio:

Zcat F1.dat.GZ F2.dat.GZ | Pigz> out.Gz

Ecco il codice Python che spiega come implementare il comando UNIX con il sottoprocesso in Python.

P1 = sottoprocesso.Popen (["ZCAT", F1.dat.gz "," f2.dat.gz "],
stdout = sottoprocess.TUBO)
fout = open ('out.gz ',' wb ')
P2 = sottoprocesso.run (['Pigz'], stdin = p1.stdout, stdout = fout) a

Si noti che il metodo Popen () viene utilizzato con il primo sottoprocesso, mentre il metodo run () viene utilizzato con la seconda chiamata che codifica. L'errore successivo verrà causato se il metodo run () viene utilizzato con il tubo stesso.

Esempio 2:

Questo esempio spiegherà come un programma Python chiede il nome di un utente. Quindi Echo è con un messaggio di saluto e chiede ripetutamente i nomi fino a quando l'utente non entra nell'uscita "uscita."Quando l'utente inserisce" uscita "nella risposta di chiedere il nome, la condizione IF ha soddisfatto i criteri e l'esecuzione del programma si interrompe. Vedere il codice indicato di seguito.

Import sys
Stampa ("Qual è il tuo nome?")
per il nome in iter (sys.stdin.linea di lettura, "):
nome = nome [:-1]
if name == "uscita":
rottura
print ("beh, come stai 0?".Formato (nome))
stampa ("\ n come ti chiami?")

Ecco l'output ripetuto del codice sopra che si interrompe solo quando l'utente inserisce la parola "uscita.'

Esempio 3:

Questo esempio è un po 'complicato ma facile da capire. Spiegherà come controllare l'ingresso e l'output di un programma usando pipe e sottoprocesso in Python. Vediamo prima il codice.

Sottoprocesso di importazione
Import sys
Proc = sottoprocesso.Popen (["Python", Callmyname.py "])
Mentre Proc.Returncode non è nessuno:
Proc.sondaggio()
Proc = sottoprocesso.Popen (["Python", Callmyname.py "],
stdin = sottoprocess.Pipe, stdout = sottoprocess.TUBO)
Proc.stdin.Scrivi ("Alex \ n")
Proc.stdin.Scrivi ("jhon \ n")
Proc.stdin.vicino()
Mentre Proc.Returncode non è nessuno:
Proc.sondaggio()
print ("Sono tornato dal programma figlio questo: \ n 0".Formato (Proc.stdout.Leggere()))

Il sottoprocesso.Popen () prende due argomenti nominati, uno è stdin e il secondo è stdout. Entrambi questi argomenti sono opzionali. Questi argomenti vengono utilizzati per impostare il tubo, che il processo figlio utilizza come stdin e stdout. Il sottoprocesso.Il tubo viene passato come costante in modo che uno dei sottoprocessi.Popen () o sottoprocesso.Pipe l'utente specifica di volere il risultato. Un processo di bambino chiamato Callmyname.PY è creato nel programma. Due nomi vengono passati al callmyname.PY prima di inviare il segnale EOF all'ingresso del bambino. Il processo madre attende che il processo del bambino finisca prima di leggere l'output prodotto dal processo figlio. Di seguito è riportato l'output del codice di cui sopra.

Come puoi vedere, è semplice usare il tubo con il sottoprocesso in Python. Se segui gli esempi sopra indicati, puoi facilmente imparare l'uso del tubo con i sottoprocessi in Python.

Conclusione:

Questo articolo parla di come utilizzare il sottoprocesso di Python con il tubo. Innanzitutto, abbiamo introdotto brevemente ciò che una pipa è per un sottoprocesso in Python, quindi abbiamo fornito alcuni esempi per spiegare come usare il tubo con un sottoprocesso in Python.