Discussion:
Não fechar prompt
leodinei
2004-11-03 14:37:25 UTC
Permalink
É o seguinte galera, eu escrevi uma interface com wxPython para um
programa de linha de comando (ffmpeg).
Eu gostaria de saber se tem alguma maneira para quando o programa
encerrar a execução não fechar o prompt do dos,
para ser possível ver o output do programa.

Obrigado a todos.
Osvaldo Santana
2004-11-03 13:38:41 UTC
Permalink
No windows existe o Python e o PythonW... o interpretador Python chama
um Prompt do DOS para ser executado. e o PythonW não faz isso.

O .py é executado pelo Python e o .pyw é executado pelo PythonW, mas
você também pode abrir um prompt do DOS e executar sua aplicação com
um:

C:\> c:\Python23\python meuprograma.py

E ao terminar a execução ele irá voltar para o Prompt.

Valeu,
Osvaldo
Post by leodinei
É o seguinte galera, eu escrevi uma interface com wxPython para um
programa de linha de comando (ffmpeg).
Eu gostaria de saber se tem alguma maneira para quando o programa
encerrar a execução não fechar o prompt do dos,
para ser possível ver o output do programa.
Obrigado a todos.
--
Osvaldo Santana Neto (aCiDBaSe)
icq, url = (11287184, "http://www.pythonbrasil.com.br")
Gustavo Barbieri
2004-11-03 13:53:19 UTC
Permalink
Post by Osvaldo Santana
No windows existe o Python e o PythonW... o interpretador Python chama
um Prompt do DOS para ser executado. e o PythonW não faz isso.
O .py é executado pelo Python e o .pyw é executado pelo PythonW, mas
você também pode abrir um prompt do DOS e executar sua aplicação com
C:\> c:\Python23\python meuprograma.py
E ao terminar a execução ele irá voltar para o Prompt.
Valeu,
Osvaldo
Só lembrando que isso não é uma solução muito boa, principalmentepelo
reduzido tamanho do histórico do terminal.

O correto seria você redirecionar as mensagens de erro para algum
arquivo de log e depois ler deste arquivo.
--
Gustavo Sverzut Barbieri
---------------------------------------
Computer Engineer 2001 - UNICAMP
GPSL - Grupo Pro Software Livre
Cell..: +55 (19) 9165 8010
Jabber: ***@jabber.org
ICQ#: 17249123
GPG: 0xB640E1A2 @ wwwkeys.pgp.net
leodinei
2004-11-03 16:28:41 UTC
Permalink
Post by Osvaldo Santana
No windows existe o Python e o PythonW... o interpretador Python chama
um Prompt do DOS para ser executado. e o PythonW não faz isso.
O .py é executado pelo Python e o .pyw é executado pelo PythonW, mas
você também pode abrir um prompt do DOS e executar sua aplicação com
C:\> c:\Python23\python meuprograma.py
E ao terminar a execução ele irá voltar para o Prompt.
Valeu,
Osvaldo
Só lembrando que isso não é uma solução muito boa, principalmente pelo
reduzido tamanho do histórico do terminal.
O correto seria você redirecionar as mensagens de erro para algum
arquivo de log e depois ler deste arquivo.
Desculpe pessoal, acho que eu não consegui me explicar.
Eu chamo o programa ffmpeg.exe usando "os.execv" e automaticamente
aparece o prompt do DOS e quando termina a execução dele
o prompt é fechado.
Teria como eu evitar o encerramento do prompt como se eu tivesse
chamado o ffmpeg atráves da linha de comando, ou então
ele ficar esperando por um "enter" ou alguma coisa assim.
Eu só não quero que o prompt simplismente suma.
Gustavo Barbieri
2004-11-03 17:11:21 UTC
Permalink
Post by leodinei
Post by Osvaldo Santana
No windows existe o Python e o PythonW... o interpretador Python chama
um Prompt do DOS para ser executado. e o PythonW não faz isso.
O .py é executado pelo Python e o .pyw é executado pelo PythonW, mas
você também pode abrir um prompt do DOS e executar sua aplicação com
C:\> c:\Python23\python meuprograma.py
E ao terminar a execução ele irá voltar para o Prompt.
Valeu,
Osvaldo
Só lembrando que isso não é uma solução muito boa, principalmente pelo
reduzido tamanho do histórico do terminal.
O correto seria você redirecionar as mensagens de erro para algum
arquivo de log e depois ler deste arquivo.
Desculpe pessoal, acho que eu não consegui me explicar.
Eu chamo o programa ffmpeg.exe usando "os.execv" e automaticamente
aparece o prompt do DOS e quando termina a execução dele
o prompt é fechado.
Teria como eu evitar o encerramento do prompt como se eu tivesse
chamado o ffmpeg atráves da linha de comando, ou então
ele ficar esperando por um "enter" ou alguma coisa assim.
Eu só não quero que o prompt simplismente suma.
Você deve usar o popen2 ou popen3 e direcionar as saídas/entradas do
modo que desejar... no caso direcione a saída padrão para um
log-out.txt e a de erro para log-err.txt
--
Gustavo Sverzut Barbieri
---------------------------------------
Computer Engineer 2001 - UNICAMP
GPSL - Grupo Pro Software Livre
Cell..: +55 (19) 9165 8010
Jabber: ***@jabber.org
ICQ#: 17249123
GPG: 0xB640E1A2 @ wwwkeys.pgp.net
leodinei
2004-11-03 19:07:52 UTC
Permalink
Post by Gustavo Barbieri
Você deve usar o popen2 ou popen3 e direcionar as saídas/entradas do
modo que desejar... no caso direcione a saída padrão para um
log-out.txt e a de erro para log-err.txt
Não é bem o que eu queria, pois ainda é necessário ler os arquivos
manualmente.
Seria possível eu usar "exceptions" para pegar o output do programa
ao encerrar? Com isso eu poderia mostrar
uma janela com o output do programa. Se a resposta for sim, alguém
teria um exemplo?
Gustavo Barbieri
2004-11-03 18:20:06 UTC
Permalink
Post by leodinei
Post by Gustavo Barbieri
Você deve usar o popen2 ou popen3 e direcionar as saídas/entradas do
modo que desejar... no caso direcione a saída padrão para um
log-out.txt e a de erro para log-err.txt
Não é bem o que eu queria, pois ainda é necessário ler os arquivos
manualmente.
Bom, se é o que você queria ou não, é com você.... só que isso é o
jeito certo de fazer. Ao menos em Python. Se você quiser ver as
mensagens precisa disso, o resto (o que você acha certo) é efeito
colateral.
Você poderia deixar esta parte de output com o shell, fazendo
ffmpeg opcoes > log.txt, o que é equivalente ao popen, porém quem faz
a chamada do popen eh o shell.
Post by leodinei
Seria possível eu usar "exceptions" para pegar o output do programa
ao encerrar? Com isso eu poderia mostrar
uma janela com o output do programa. Se a resposta for sim, alguém
teria um exemplo?
Se a janela abre-se automaticamente, como o Osvaldo disse, você pode
utilizar o seguinte: apos a execucao da chamada ao ffmpeg.exe, você
faz uma espera ou espera por entrada do teclado... ex: raw_input()
--
Gustavo Sverzut Barbieri
---------------------------------------
Computer Engineer 2001 - UNICAMP
GPSL - Grupo Pro Software Livre
Cell..: +55 (19) 9165 8010
Jabber: ***@jabber.org
ICQ#: 17249123
GPG: 0xB640E1A2 @ wwwkeys.pgp.net
Osvaldo Santana
2004-11-03 19:18:26 UTC
Permalink
Acho que o que vc está querendo fazer é o seguinte:

r, w, e = os.popen3('ffmpeg...')

err_log = e.readlines()
log = r.readlines()

r.close()
e.close()
w.close()

if err_log:
# abre a janela com as mensagens de erro que estão
print '\n'.join(err_log)

Não testei esse código, mas o caminho é +/- esse...

Valeu,
Osvaldo
Post by Gustavo Barbieri
Post by leodinei
Post by Gustavo Barbieri
Você deve usar o popen2 ou popen3 e direcionar as saídas/entradas do
modo que desejar... no caso direcione a saída padrão para um
log-out.txt e a de erro para log-err.txt
Não é bem o que eu queria, pois ainda é necessário ler os arquivos
manualmente.
Bom, se é o que você queria ou não, é com você.... só que isso é o
jeito certo de fazer. Ao menos em Python. Se você quiser ver as
mensagens precisa disso, o resto (o que você acha certo) é efeito
colateral.
Você poderia deixar esta parte de output com o shell, fazendo
ffmpeg opcoes > log.txt, o que é equivalente ao popen, porém quem faz
a chamada do popen eh o shell.
Post by leodinei
Seria possível eu usar "exceptions" para pegar o output do programa
ao encerrar? Com isso eu poderia mostrar
uma janela com o output do programa. Se a resposta for sim, alguém
teria um exemplo?
Se a janela abre-se automaticamente, como o Osvaldo disse, você pode
utilizar o seguinte: apos a execucao da chamada ao ffmpeg.exe, você
faz uma espera ou espera por entrada do teclado... ex: raw_input()
--
Osvaldo Santana Neto (aCiDBaSe)
icq, url = (11287184, "http://www.pythonbrasil.com.br")
Renato Albano
2004-11-08 20:21:04 UTC
Permalink
cara, ve se isso ajuda:

import os
print "hello!"
os.system("PAUSE")


as vezes uso isso no windows quando quero segurar um console,
mas só pega no windows!
Washington Coutinho Corrêa Junior
2004-11-09 02:51:45 UTC
Permalink
Pode-se também usar apenas o...

raw_input()

... no final, para que a aplicação fique esperando por uma string. Daí,
basta teclar Enter para fechar.

Junior
"Recolha um cão na rua, dê-lhe de comer e ele não lhe morderá: eis a
diferença fundamental entre o cão e o homem." (Mark Twain)


----- Original Message -----
From: "Renato Albano" <***@yahoo.com.br>
To: <python-***@yahoogrupos.com.br>
Sent: Monday, November 08, 2004 6:21 PM
Subject: Re: [python-brasil] Não fechar prompt



cara, ve se isso ajuda:

import os
print "hello!"
os.system("PAUSE")


as vezes uso isso no windows quando quero segurar um console,
mas só pega no windows!


===============================================================

Antes de enviar sua mensagem dê uma lida em:

http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar

===============================================================

Links do Yahoo! Grupos
leodinei
2004-11-09 14:25:41 UTC
Permalink
O problema com o teu exemplo e o do Renato é que se a extensão do
arquivo for ".pyw" ele fecha a primeira janela do DOS e abre uma segunda,
eu vou usar o arquivo como ".py" mesmo, assim ele sempre usa a mesma
janela pro output.
Eu queria usar um ".pyw" para ficar mais bonito, para não ter sempre
a janela do DOS, mas não é realmente necessário.
Agora eu estou tendo que estudar para uma prova, mas assim que eu
tiver um tempinho vou tentar implementar um controle usando o "popen",
seguindo uma dica de alguém da
lista - desculpe eu não tenho o e-mail aqui comigo para saber quem foi .
Obrigado a todos que me ajudaram.

-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Post by Washington Coutinho Corrêa Junior
Pode-se também usar apenas o...
raw_input()
... no final, para que a aplicação fique esperando por uma string. Daí,
basta teclar Enter para fechar.
Junior
"Recolha um cão na rua, dê-lhe de comer e ele não lhe morderá: eis a
diferença fundamental entre o cão e o homem." (Mark Twain)
----- Original Message -----
Sent: Monday, November 08, 2004 6:21 PM
Subject: Re: [python-brasil] Não fechar prompt
import os
print "hello!"
os.system("PAUSE")
as vezes uso isso no windows quando quero segurar um console,
mas só pega no windows!
Loading...