[python-brasil] Duvida em executar programas externos...

474 views
Skip to first unread message

Rodrigo faccioli

unread,
Apr 5, 2009, 5:34:15 PM4/5/09
to python...@yahoogrupos.com.br
Pessoal,

Gostaria de uma opnião referente a pratica de chamar programas externos ao
seu. Por exemplo, qual seria a melhor maneira?

Andei procurando no google e vi q posso utilizar os.sytem e o os.popen

Praticamente todos os programas que tenho q executar externamente ao meu,
terei q montar uma linha de comando do mesmo onde terei q informar onde
encontra-se os arquivos e seus nomes, etc. Há um outro tipo, onde tenho que
criar um arquivo de configuração e chamar o programa informando somente onde
esta o arquivo de configuração. O que eu preciso em todos os casos se o
programa externo conseguiu executar sem erros uma vez que sua saída pode ser
entrada para um outro programa externo que ira ser chamado pela minha
aplicação.

Com o os.system eu consegui executar e entende-lo. Porem o mesmo nao me
apresenta todos os requisitos que necessito. Seu controle é bem pequeno. Ja
o os.popen eu nao consegui entende-lo.

Sendo assim, gostaria de saber onde posso encontrar mais
informações/exemplos alem de opniões a respeito.

Desde ja agradeço a atenção de todos.

Abraços,

--
Rodrigo Antonio Faccioli
Ph.D Student in Electrical Engineering
University of Sao Paulo - USP
Engineering School of Sao Carlos - EESC
Department of Electrical Engineering - SEL
Intelligent System in Structure Bioinformatics
http://laips.sel.eesc.usp.br
Phone: 55 (16) 3373-9366 Ext 229
Curriculum Lattes - http://lattes.cnpq.br/1025157978990218


[As partes desta mensagem que não continham texto foram removidas]

------------------------------------

,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia: |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
| E se você é usuário do BOL lembre-se de cadastrar o |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/python-brasil/

<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html


Adam Victor Nazareth Brandizzi

unread,
Apr 5, 2009, 5:49:26 PM4/5/09
to python...@yahoogrupos.com.br
2009/4/5 Rodrigo faccioli <rodrigo_...@uol.com.br>:

> Pessoal,
>
> Gostaria de uma opnião referente a pratica de chamar programas externos ao
> seu. Por exemplo, qual seria a melhor maneira?
>
> Andei procurando no google e vi q posso utilizar os.sytem e o os.popen
>
> Praticamente todos os programas que tenho q executar externamente ao meu,
> terei q montar uma linha de comando do mesmo onde terei q informar onde
> encontra-se os arquivos e seus nomes, etc. Há um outro tipo, onde tenho que
> criar um arquivo de configuração e chamar o programa informando somente onde
> esta o arquivo de configuração. O que eu preciso em todos os casos se o
> programa externo conseguiu executar sem erros uma vez que sua saída pode ser
> entrada para um outro programa externo que ira ser chamado pela minha
> aplicação.
>
> Com o os.system eu consegui executar e entende-lo. Porem o mesmo nao me
> apresenta todos os requisitos que necessito. Seu controle é bem pequeno. Ja
> o os.popen eu nao consegui entende-lo.
>
> Sendo assim, gostaria de saber onde posso encontrar mais
> informações/exemplos alem de opniões a respeito.
>
> Desde ja agradeço a atenção de todos.

Pode começar estudando o subprocess, o módulo que substituiu as duas
funções que você citou :)

http://docs.python.org/library/subprocess.html

> Abraços,

Até!

--
Adam Victor Nazareth Brandizzi
http://brandizzi.googlepages.com/

gabrielmonnerat

unread,
Apr 5, 2009, 6:26:16 PM4/5/09
to python...@yahoogrupos.com.br
Fala Rodrigo,

Ultimamente eu tenho usado o subprocess. Não sei se é o melhor, mas
resolveu meus problemas.

exemplos:

>>> import subprocess
>>> subprocess.call(['ls','-la'])

total 556
drwxr-xr-x 21 root adm 4096 2009-04-05 12:27 .
drwxr-xr-x 21 root adm 4096 2009-04-05 12:27 ..
-rw-r--r-- 1 root root 0 2009-04-05 12:27 .autofsck
drwxr-xr-x 2 root root 4096 2009-04-03 19:40 bin
drwxr-xr-x 3 root root 4096 2009-04-05 12:27 boot

Executando um comando:

>>> proc = subprocess.Popen(['openoffice.org2.4'])
>>> proc.pid # Retorna o pid do processo
25190

Pegando a saida e os erros:

>>> proc = subprocess.Popen(['ls','-la'],stdout=subprocess.PIPE)
>>> stdout, stderr = proc.communicate()
>>> stdout
'total 556\ndrwxr-xr-x 21 root adm 4096 2009-04-05 12:27
.\ndrwxr-xr-x 21 root adm 4096 2009-04-05 12:27 ..\n-rw-r--r-- 1
root root 0 2009-04-05 12:27 .autofsck\ndrwxr-xr-x 2 root root
4096 2009-04-03 19:40 bin\ndrwxr-xr-x 3 root root 4096 2009-04-05
12:27 boot\n-rw------- 1 root root 462219 2009-04-05 14:34
dead.letter\ndrwxr-xr-x 15 root root 4400 2009-04-05 14:21
dev\ndrwxr-xr-x 129 root root 12288 2009-04-05 15:58 etc\ndrwxr-xr-x
6root root 4096 2009-03-20 15:06 home\ndrwxr-xr-x 2 root root 4096
2009-03-20 14:12 initrd\ndrwxr-xr-x 15 root root 4096 2009-04-03
19:06 lib\ndrwxr-xr-x 5 root root 4096 2009-03-20 07:53
live\ndrwx------ 2 root root 16384 2009-03-20 11:05
lost+found\ndrwxr-xr-x 4 root root 4096 2009-04-05 12:27
media\ndrwxr-xr-x 3 root root 4096 2009-03-20 10:57
mnt\ndrwxr-xr-x 6 root root 4096 2009-03-22 23:37 opt\ndr-xr-xr-x
139 root root 0 2009-04-05 09:27 proc\ndrwx------ 25 root root
4096 2009-04-05 19:12 root\ndrwxr-xr-x 2 root root 12288 2009-04-02
14:52 sbin\ndrwxr-xr-x 12 root root 02009-04-05 09:27
sys\ndrwxrwxrwt 28 root root 4096 2009-04-05 19:18 tmp\ndrwxr-xr-x
14 root root 4096 2009-03-20 16:55 usr\ndrwxr-xr-x 17 root root4096
2009-03-21 11:02 var\n'
>>> stderr
>>>

Espero que tenha ajudado

vlw
abraço

Gabriel M. Monnerat

> http://laips.sel.eesc.usp.br <http://laips.sel.eesc.usp.br>

Reply all
Reply to author
Forward
0 new messages