Executando processo com o Python

Executando processo com o Python

Estou escrevendo essa postagem para usá-la como citações em outras postagens.

As vezes é necessário executar processos externos com o Python. Lembre-se que comandos no terminal como ls são processos e podemos executa-los no Python. Para isso, usaremos o Popen da biblioteca padrão subprocess.

Descreverei aqui os parâmetros que já usei em alguma postagem:

import os
my_path = os.path.dirname(os.path.realpath(__file__))

Sempre após o uso do Popen, é provável que desejamos prosseguir com o código somente quando o processo chamado por finalizado, então usamos

assert(p.wait() == 0)

Exemplos

from subprocess import Popen

p = Popen(['ls'])
assert(p.wait() == 0)

Executará o processo ls e imprimirá o retorno na mesma saída do Python

from subprocess import Popen

p = Popen(['ls', '-l'])
assert(p.wait() == 0)

Executará o processo ls com o parâmetro -l

from subprocess import Popen, PIPE

p = Popen(['ls', '-l'], stdout=PIPE)
x = str(p.stdout.read()).split('\\n')[1:-1]
assert(p.wait() == 0)

Não imprimirá mais o que o processo imprimiu, mas sim armazenará na variável x

from subprocess import Popen, PIPE

p = Popen(['ls', '-l'], stdout=PIPE, cwd='/')
x = str(p.stdout.read()).split('\\n')[1:-1]
assert(p.wait() == 0)

Alteramos o diretório em que o processo trabalhará para /