getopt em python [RESOLVIDO]

1. getopt em python [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 22/04/2010 - 15:28h

galera, preciso usar o getopt, mas nao estou conseguindo

ja li essa dica varias vezes mas ateh agr nao entendi

http://www.vivaolinux.com.br/dica/Processar-%28parser%29-opcoes-da-linha-de-comando-em-Python/

teria como alguem criar um script simples com isso

algo parecido com isso

# python teste.py -n douglas -i 19

ai retorna isso

"douglas tem 19 anos"

soh para eu pegar o jeito de como funciona

vlw


  


2. MELHOR RESPOSTA

Marcos Paulo Ferreira
Daemonio

(usa Slackware)

Enviado em 26/08/2010 - 06:54h

optlist , args = gnu_getopt(sys.argv[1:],lista_arg)

optlist => É uma lista de tuplas. Cada tupla é um par ("opção","argumento"). Se nenhuma opção é encontrada na linha de comando, então essa lista é vazia.

args => Argumentos a mais. Se determinada opção não recebe argumento, então esse argumento desconhecido é enviado para cá. Veja que é argumento e não opção, porque opções desconhecidas geram exceções.

lista_arg => Lista de opções que seu script recebe. As opções precedidas de ':' recebem argumentos.

Em seu caso temos:
-n <nome>
-i <idade>

Tanto a opção -n e a -i recebem argumentos, então list_args vai ser 'n:i:'.

Exemplin bobo:

# sem imports e tratamento de exceção só pra
# economizar espaço :D
# ... e o vol comeu as indentações :(
optlist , args = gnu_getopt( sys.argv[1:], 'n:i:' ) ;
for (opcao,argumento) in optlist:
if opcao == '-n':
nome = argumento
elif opcao == '-i':
idade = argumento ;

print nome,' tem ',idade,'anos'

$ ./script -n 'Douglas' -i '9999'
Douglas tem 9999 anos

Veja se é isso mesmo.
t+

3. Re: getopt em python [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 26/08/2010 - 01:38h

up


4. Re: getopt em python [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 26/08/2010 - 18:00h

eu coloquei assim

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

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import getopt
import sys

optlist , args = gnu_getopt(sys.argv[1:],'n:i:')
for (opcao,argumento) in optlist:
if opcao == '-n':
nome=argumento
elif opcao == '-i':
idade=argumento

print nome,'tem',idade,'anos'

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

[douglas@PC /usr/home/douglas/projetos/python]$ python teste.py -n douglas -i 20
Traceback (most recent call last):
File "teste.py", line 7, in <module>
optlist , args = gnu_getopt(sys.argv[1:],'n:i:')
NameError: name 'gnu_getopt' is not defined



5. Re: getopt em python [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 26/08/2010 - 18:54h

agr funcionou

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

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import getopt
import sys
import os
import commands

optlist , args = getopt.getopt(sys.argv[1:],"n:i:")

for (opcao,argumento) in optlist:
if opcao == '-n':
nome=argumento
elif opcao == '-i':
idade=argumento

print nome,'tem',idade,'anos'



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

pq o getopt.getopt??


6. Re: getopt em python [RESOLVIDO]

Marcos Paulo Ferreira
Daemonio

(usa Slackware)

Enviado em 27/08/2010 - 09:20h

Essa é a sintaxe padrão para acessar um atributo de um módulo importado.

Para evitar isso, você pode utilizar:

from getopt import getopt

Aí dá pra usar a getopt() normalmente sem o nome do módulo.

t+


7. Re: getopt em python [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 27/08/2010 - 09:25h

hmmm...

interessante, nunca soube direito pra que servia o from junto com import

ja estou aproveitando muito esse getopt, hehhe

vlw






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts