Como executar um comando ou programa externo em python

Como executar um comando ou programa externo em python

O python subprocesso O módulo permite gerar novos processos e executar comandos ou scripts externos dos scripts Python. Você pode instalar a versão mais recente do Python usando esses tutoriais. Além disso, há um número de IDE disponível para Python. Como instalar o PyCharm Python IDE nos sistemas Ubuntu.

Python Scpt para chamar o comando do sistema

Vamos criar seu primeiro programa para listar todos os arquivos disponíveis no diretório atual. Você pode adicionar qualquer número de parâmetros da linha de comando com o comm (,) separado.

#!/usr/bin/python3 Subprocesso de subprocesso.Call (["LS", "-l"])
1234#!/usr/bin/python3 importar subprocessssubprocess.Call (["LS", "-l"])

Onde-

  • A declaração de importação é usada para carregar o módulo de subprocesso da biblioteca padrão python
  • Chamada é a função do módulo de subprocesso, é usada para executar comandos externos

Impressão em python sem nova linha

Os comandos Python terminam com a saída de nova linha “\ n”, que você pode substituir usando end = ”” significa que a próxima saída de comando estará na mesma linha. Veja o exemplo abaixo.

#!/usr/bin/python3 Implic Print ("\ ntoday is",) Subprocess.Ligue para (["Data", "+%d"]))
123456#!/usr/bin/python3 Importo de subprocesso ("\ ntoday is", end = "") subprocesso.Ligue para (["Data", "+%d"]))

Resultado:

Hoje é 01/11/18 

Exemplo de Python com expansão da concha

O subprocesso padrão.A chamada não expande os curingas do shell ou executa a substituição de comando. Isso pode ser substituído passando o valor verdadeiro para o argumento da concha. Lembre -se de que o uso de shell = true pode ser um problema de segurança para o seu sistema, executando o comando prejudicial.

#!/usr/bin/python3 importar subprocesso # Execução do comando sem subprocessamento de expansão do shell.Call (['Echo', 'Welcome $ user']) # executando um comando com subprocessamento de expansão do Shell.Call ('Echo bem -vindo $ user', shell = true)
123456789#!/usr/bin/python3 importar subprocesso # executando comando sem shell expansionsubprocess.Call (['Echo', 'Welcome $ user']) # Executando um comando com o Shell ExpansionsubProcess.Call ('Echo bem -vindo $ user', shell = true)

Resultado:

Bem -vindo $ raiz de boas -vindas do usuário 

Você pode ver na saída acima que o primeiro comando imprime um nome de variável porque foi executado sem expansão da concha. O segundo comando executado com expansão do shell obtém o valor da variável do ambiente do usuário. Além disso, você pode ver que todo o comando agora é passado como uma string e não como uma lista de strings.

Outros exemplos úteis de Python

Você pode tornar seus scripts um formato mais legível e bonito armazenando um longo comando em uma variável e depois executá -lo.

#!/usr/bin/python3 importar subprocess cmd = "grep -re 'fatal'/var/log/> pesquisas.txt "subprocesso.Ligue para (CMD, shell = true)
123456#!/usr/bin/python3 importar subprocess cmd = "grep -re 'fatal'/var/log/> pesquisas.txt "subprocesso.Ligue para (CMD, shell = true)

Você também pode armazenar a saída de qualquer comando para uma variável usando o subprocesso.getOutput. Isso também armazenará se alguma mensagem de erro for gerada.

#!/usr/bin/python3 Implic Print ("A saída do comando 'pwd' é:", flush = true) output = subprocess.GetOutput ('PWD') impressão (saída)
12345678#!/usr/bin/python3 Implic Print ("A saída do comando 'pwd' é:", flush = true) output = subprocess.GetOutput ('PWD') impressão (saída)

Resultado:

A saída do comando 'PWD' é:/root/python/scripts