49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
# Usando subprocess para executar e comandos externos
|
|
# subprocess é um módulo do Python para executar
|
|
# processos e comandos externos no seu programa.
|
|
# O método mais simples para atingir o objetivo é usando subprocess.run().
|
|
# Argumentos principais de subprocess.run():
|
|
# - stdout, stdin e stderr -> Redirecionam saída, entrada e erros
|
|
# - capture_output -> captura a saída e erro para uso posterior
|
|
# - text -> Se True, entradas e saídas serão tratadas como texto
|
|
# e automaticamente codificadas ou decodificadas com o conjunto
|
|
# de caracteres padrão da plataforma (geralmente UTF-8).
|
|
# - shell -> Se True, terá acesso ao shell do sistema. Ao usar
|
|
# shell (True), recomendo enviar o comando e os argumentos juntos.
|
|
# - executable -> pode ser usado para especificar o caminho
|
|
# do executável que iniciará o subprocesso.
|
|
# Retorno:
|
|
# stdout, stderr, returncode e args
|
|
# Importante: a codificação de caracteres do Windows pode ser
|
|
# diferente. Tente usar cp1252, cp852, cp850 (ou outros). Linux e
|
|
# mac, use utf_8.
|
|
# Comando de exemplo:
|
|
# Windows: ping 127.0.0.1
|
|
# Linux/Mac: ping 127.0.0.1 -c 4
|
|
import subprocess
|
|
import sys
|
|
|
|
# sys.platform = linux, linux2, darwin, win32
|
|
|
|
cmd = ['ls -lah /']
|
|
encoding = 'utf_8'
|
|
system = sys.platform
|
|
|
|
if system == "win32":
|
|
cmd = ['ping', '127.0.0.1']
|
|
encoding = 'cp850'
|
|
|
|
|
|
proc = subprocess.run(
|
|
cmd, capture_output=True,
|
|
text=True, encoding=encoding,
|
|
shell=True,
|
|
)
|
|
|
|
print()
|
|
|
|
# print(proc.args)
|
|
# print(proc.stderr)
|
|
print(proc.stdout)
|
|
# print(proc.returncode)
|