Como usar o Método de Check_output de Subprocesso Python?

Como usar o Método de Check_output de Subprocesso Python?
Neste artigo, daremos uma breve introdução de subprocessos do Python e discutiremos como usar o subprocesso check_output no python. Vamos começar sabendo o que é um subprocesso no Python. Subprocess é um módulo Python usado para executar novos códigos, criando novos processos. Ele permite ao usuário criar um novo aplicativo no programa Python atualmente executado. Quando o usuário deseja executar um programa externo de um programa C ou C ++ ou de qualquer programa externo de um repositório Git, o subprocesso Python pode mesclar esses programas. Além disso, o usuário também pode obter entrada, saída, códigos de saída ou tubos de erro usando o subprocesso Python. Dois parâmetros na chamada de função são passados; O primeiro parâmetro refere -se ao programa que o usuário deseja inicializar e o outro argumento se refere aos argumentos do arquivo.

Existem muitos módulos de subprocesso em Python, por exemplo, subprocesso.run (), subprocesso.Popen (), subprocesso.Call (), subprocesso.check_call (), subprocesso.check_output (), etc. Aqui vamos esclarecer o que é o subprocesso.check_output (), qual é a sua função e como ela é usada em um programa Python.

A sintaxe do subprocesso.check_output ()

Todo programa Python possui canais padrão para o processo ou subprocesso. Esses canais são iniciados por Call () e ligados à entrada e saída do programa pai. Em outras palavras, o comando da saída do programa de chamada não pode ser capturado. Portanto, o módulo de subprocesso check_output () no python é usado para capturar a saída do programa de chamada para processamento posterior. A sintaxe do subprocesso.check_output () é o seguinte:

subprocesso.check_output (args, *, stdin = nenhum, stderr = nenhum, shell = false, universal_newlines = false)

O argumento 'args' do subprocesso.check_output refere -se ao comando que deve ser executado. Vários comandos podem ser passados ​​para o argumento 'args' como uma string; No entanto, eles devem ser separados por um semicolon ';.'O argumento stdin refere -se ao valor do fluxo de entrada padrão que precisa ser passado um tubo. O argumento do stdout refere -se ao valor da saída gerada a partir do fluxo de saída padrão. O argumento Stderr refere -se ao valor do erro gerado a partir do fluxo de erro padrão.

O argumento do shell refere -se ao parâmetro booleano, que é executado através de um novo ambiente de shell somente quando é verdade. O último argumento, Universal_newlines é outro parâmetro booleano. Se o argumento da Universal_Newlines for verdade. A saída ou o retorno do subprocesso.check_output () é o código do comando.

Aqui está um exemplo para fazer você entender como o módulo check_output () captura a saída do programa de chamada.

Exemplo 1:

Este exemplo simples produzirá o código de saída do comando.

Subprocess de importação
Calling_Output = Subprocess.check_output (['ls', '-l'])
Imprimir (Calling_Output)

Aqui está a saída do exemplo dado:

Exemplo 2:

Este exemplo produzirá a saída do programa de chamada.

Subprocess de importação
Imprimir (subprocesso.check_output (["echo", "abc"])))

Aqui está a saída do código acima:

Exemplo 3:

Este exemplo demonstrará como programas externos de qualquer linguagem de programação como C, C ++, Java, etc., são incorporados em um programa Python usando o subprocesso no Python e como check_output () executará a saída desses programas externos.

Este é um programa C:

int main ()

printf ("imprimir hello_world da linguagem de programação C");
retornar 0;

Abaixo está o programa C ++

#incluir
usando namespace std;
int main ()

int a, b;
CIN >> A;
CIN >> b;
cout << "Print Hello_World from C++ programing language and the Values are:" << a << " " << b;
retornar 0;

Este é o programa Java

Helloworld de classe

público
estático void main (string args [])

Sistema.fora.print ("Imprima hello_world da linguagem de programação Java");

Aqui está o programa Python que executa os programas acima usando o subprocesso em Python

Subprocess de importação
OS de importação
def Exec ():
a = subprocesso.check_call ("gcc hello_world.C -O out1;./out1 ", shell = true)
print (", saída", a)
def Execpp ():
dados, temp = os.cano()
OS.escreva (temp, bytes ("5 10 \ n", "utf-8"));
OS.fechar (temp)
s = subprocessamento.check_output ("g ++ helloworld.cpp -o out2;./out2 ", stdin = dados, shell = true)
impressão (s.Decode ("UTF-8"))
def exejava ():
s = subprocessamento.check_output ("Javac Helloworld.java; java helloworld ", shell = true)
impressão (s.Decode ("UTF-8"))
Se __name __ == "__ main__":
exec ()
EXECPP ()
exejava ()

Aqui está a saída do programa acima:

Observação: Embora o módulo de subprocesso no Python seja independente, esses comandos precisam ser executados no ambiente Linux. Além disso, o shell = true pode se tornar um risco de segurança se uma entrada não confiável for combinada, conforme definido na documentação do Python.

Conclusão:

Este artigo é sobre o subprocesso.Check_Output () Módulo do subprocesso em Python. Aqui temos uma breve discussão sobre subprocessos em Python e depois explicamos o uso do subprocesso.check_output (). Vamos ter uma rápida recapitulação do artigo. O subprocesso em Python cria um novo programa para executar um novo código. Ele permite ao usuário criar um novo aplicativo no programa Python atualmente executado. Existem muitos módulos de subprogramas em Python, e alguns deles são subprocessos.Call (), subprocesso.Popen (), subprocesso.check_call (), subprocesso.check_output ().

O subprocesso.check_output () é usado para obter a saída do programa de chamada no Python. Tem 5 argumentos; args, stdin, stderr, shell, universal_newlines. O argumento args mantém os comandos que devem ser passados ​​como uma string. O stdin, stdout e stderr fornecem o valor de entrada, saída e erro, respectivamente, a partir do fluxo padrão. O Shell e o Universal_Newlines são os parâmetros booleanos que apenas executam os comandos quando o valor do argumento é verdadeiro. O código de retorno do comando é dado como saída do subprocesso.função check_ouput (). Uma sequência de bytes é retornada como saída se o código for zero; caso contrário, chamadoProcesSerror está sendo criado.