[PARÂMETRO PREVIAMENTE SELECIONADO EM CÓDIGO PYTHON] [RESOLVIDO]

1. [PARÂMETRO PREVIAMENTE SELECIONADO EM CÓDIGO PYTHON] [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 29/11/2016 - 04:58h

Olá,

qual a melhor forma de 'pré selecionar' as opções de um código em Python?


preciso que ele rode sem a necessidade de se passar os argumentos.


  


2. Re: [PARÂMETRO PREVIAMENTE SELECIONADO EM CÓDIGO PYTHON]

Phillipe Smith
SmithuX

(usa Arch Linux)

Enviado em 29/11/2016 - 09:54h

Meu brother, tu pode fazer isso de várias formas...
Aconselho dar uma olhada nas seguintes documentações:

https://docs.python.org/2/library/argparse.html
https://docs.python.org/2/library/getopt.html

"Não há nada como a liberdade!" (Nelson Mandela)


3. Re: [PARÂMETRO PREVIAMENTE SELECIONADO EM CÓDIGO PYTHON]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 29/11/2016 - 10:05h

SmithuX escreveu:

Meu brother, tu pode fazer isso de várias formas...
Aconselho dar uma olhada nas seguintes documentações:

https://docs.python.org/2/library/argparse.html
https://docs.python.org/2/library/getopt.html

"Não há nada como a liberdade!" (Nelson Mandela)



Obrigado pela resposta.


def func(option, seq=None):
if seq is None:
# cliente não passou argumento.
seq = []
seq.append(option)
return seq



pensei nesse método. O que o senhor acha?



4. Re: [PARÂMETRO PREVIAMENTE SELECIONADO EM CÓDIGO PYTHON] [RESOLVIDO]

Phillipe Smith
SmithuX

(usa Arch Linux)

Enviado em 29/11/2016 - 10:25h

mrx6s0 escreveu:

def func(option, seq=None):
if seq is None:
# cliente não passou argumento.
seq = []
seq.append(option)
return seq


pensei nesse método. O que o senhor acha?


Primeiramente, não é necessário definir o seq=None, pois o None já estará implícito caso declare somente seq. Aconselho especificar outro valor para seq ou deixá-lo em sem nada.

Esse bloco de código pode ficar assim:
def func(option, seq=[]):
# Pode colocar if len(seq) > 0 também
if seq:
seq.append(option)
return seq

Aí o restante vai depender de como será o restante do seu código.

"Não há nada como a liberdade!" (Nelson Mandela)


5. Re: [PARÂMETRO PREVIAMENTE SELECIONADO EM CÓDIGO PYTHON] [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 29/11/2016 - 11:25h

SmithuX escreveu:

mrx6s0 escreveu:

def func(option, seq=None):
if seq is None:
# cliente não passou argumento.
seq = []
seq.append(option)
return seq


pensei nesse método. O que o senhor acha?


Primeiramente, não é necessário definir o seq=None, pois o None já estará implícito caso declare somente seq. Aconselho especificar outro valor para seq ou deixá-lo em sem nada.

Esse bloco de código pode ficar assim:
def func(option, seq=[]):
# Pode colocar if len(seq) > 0 também
if seq:
seq.append(option)
return seq

Aí o restante vai depender de como será o restante do seu código.

"Não há nada como a liberdade!" (Nelson Mandela)





def main():
global x
if len(sys.argv)==1:
msg()
exit(0)
else:
if len(sys.argv)>2:
if sys.argv[2]=="começar":
addStartup()
else:
msg()
exit(0)
if sys.argv[1]=="parar":
x=1
hide()
elif sys.argv[1]=="remoto":
x=2
hide()
elif sys.argv[1]=="checar email":
hide()
email=TimerClass()
email.start()
elif sys.argv[1]=="ftp":
x=4
hide()
else:
msg()
exit(0)
return True



essa é a parte do código que preciso modificar!
o resto tá tudo certinho, e tenho até quinta pra entregar... hehe

alguma sugestão!?

Abraço


6. Re: [PARÂMETRO PREVIAMENTE SELECIONADO EM CÓDIGO PYTHON] [RESOLVIDO]

Phillipe Smith
SmithuX

(usa Arch Linux)

Enviado em 29/11/2016 - 11:48h

Bem, sua dúvida era como executar sem passar parâmetros, então, vendo o restante do código, bastaria você executar o que desejar no caso do sys.argv ser 1, como você já fez no código:
if len(sys.argv) == 1:
# Executa algum código padrão...

Masss, aconselho fortemente utilizar o módulo argparse que citei anteriormente, pois é muito mais elegante para o tratamento de parâmetros.

"Não há nada como a liberdade!" (Nelson Mandela)


7. Re: [PARÂMETRO PREVIAMENTE SELECIONADO EM CÓDIGO PYTHON]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 29/11/2016 - 13:14h

SmithuX escreveu:

Bem, sua dúvida era como executar sem passar parâmetros, então, vendo o restante do código, bastaria você executar o que desejar no caso do sys.argv ser 1, como você já fez no código:
if len(sys.argv) == 1:
# Executa algum código padrão...

Masss, aconselho fortemente utilizar o módulo argparse que citei anteriormente, pois é muito mais elegante para o tratamento de parâmetros.

"Não há nada como a liberdade!" (Nelson Mandela)



if __name__ == '__main__':
carg = argparse.ArgumentParser(description='Escritorio automatizado por Python,', epilog='All information is free.')

parser.add_argument('-e', '--email', type=str, help='Checar email', action='story_false')
parser.add_argument('-f', '--ftp', type=int, help='Server FTP', action='story_false)
args = carg.parse_args()

if args.email:
print 'inicializando... '

if args.ftp:
print 'conectando ao servidor ftp... ', args.ftp


pelo que eu estou lendo a função action='story_false', action='story_true' armazena os valores verdadeiros ou falsos passado no código. então quando for story_false o argumento não será incluído, apenas executado;
é assim? ou seria melhor com required=False ??


8. Re: [PARÂMETRO PREVIAMENTE SELECIONADO EM CÓDIGO PYTHON] [RESOLVIDO]

Phillipe Smith
SmithuX

(usa Arch Linux)

Enviado em 29/11/2016 - 14:02h

Na verdade o store_true e store_false atribuem ao parâmetro os valores True ou False, enquanto que o required=True|False informa se o parâmetro será obrigatório ou opcional.


"Não há nada como a liberdade!" (Nelson Mandela)


9. Re: [PARÂMETRO PREVIAMENTE SELECIONADO EM CÓDIGO PYTHON] [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 29/11/2016 - 14:08h

é praticamente o que eu falei... hehe, li store e lembrei de armazenamento...
mas enfim,

esse último bloco que eu te mandei, o que achou? deixando assim ele rodará os argumentos passados sem ser "invocado"?

ou é melhor com required=False mesmo?

DEsculpa por tanta pergunta, é que imagino que tu já trabalhe com programação, então é mais fácil falar sobre. Eu faço engenharia florestal, mas tiro muito tempo pra programação.

Enfim,


abraço


10. Re: [PARÂMETRO PREVIAMENTE SELECIONADO EM CÓDIGO PYTHON] [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 29/11/2016 - 14:15h

RESOLVIDO!



11. Re: [PARÂMETRO PREVIAMENTE SELECIONADO EM CÓDIGO PYTHON] [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 29/11/2016 - 14:16h

Testei um antigo script meu aqui com essas alterações e rodou perfeitamente!

obrigado pela ajuda e apoio!

abraço


12. Re: [PARÂMETRO PREVIAMENTE SELECIONADO EM CÓDIGO PYTHON] [RESOLVIDO]

Phillipe Smith
SmithuX

(usa Arch Linux)

Enviado em 29/11/2016 - 14:18h

mrx6s0 escreveu:

Testei um antigo script meu aqui com essas alterações e rodou perfeitamente!

obrigado pela ajuda e apoio!

abraço


Opa meu camarada! Que bacana!
Estamos aqui pra ajudar e compartilhar conhecimento mesmo! ;)

"Não há nada como a liberdade!" (Nelson Mandela)



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts