Seu método atual significa que duas coisas estão acontecendo:
-
Você está vendo a saída do subprocesso
processos podem ter alguns resultados, aqui estão dois que podem ocorrer:
-
STDOUT- informações do programa que está sendo executado -
STDERR- informações sobre erros de avisos que o programa encontrou. Este é provavelmente aquele que está te incomodando.
O uso de opções no
subprocessdeve significar que você pode canalizar as saídas para/dev/null(ou seja, o não aparecerá na saída):DEVNULL = open(os.devnull, 'wb') subprocess.call(['leafpad', filename + '.tsv'], stdout=DEVNULL, stderr=DEVNULL)Esta é a versão para o python 2.4+, o bit que define
DEVNULLpode não ser necessário em 3.3 +Note que mesmo se você remover esconder toda a saída, ele ainda aguardará o processo, então ....
-
-
e aguarda que os processos terminem antes de continuar
Se você quiser que o processo continue em segundo plano, use:
subprocess.Popen(['leafpad', filename + '.tsv'])Popennão espera a saída do processo, por isso continuará em segundo plano (ao contrário decall) - para obter mais informações, consulte aqui .
Colocar essas 'correções' juntas deve dar a você:
DEVNULL = open(os.devnull, 'wb')
subprocess.Popen(['leafpad', filename + '.tsv'], stdout=DEVNULL, stderr=DEVNULL)
Para o python 2.4+ novamente
Você pode obter mais informações na documentação aqui .
Eu sou um amador em python cuja versão de leafpad não dá erros, então se alguma coisa não funcionar por favor diga:)