Como executar um comando ou programa externo em python
- 4605
- 877
- Howard Fritsch
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