Ir para o conteúdo
Psycho_Mind

Menu opções linha comandos

Mensagens Recomendadas

Psycho_Mind

Boas

Tenho 3 scripts, cada um com a sua funcionalidade sem haver qualquer ligação entre eles, precisava agora de criar um menu do género:

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

a. Script1

b. Script2

c. Script3

Insira a opção desejada:

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

E automaticamente corria o script com a opção escolhida pelo utilizador. Não sei se é possivel de o fazer visto que ao escolher a opção o script ser corrido como se o estivesse a chamar na linha de comandos como é usual: python Script1.py ou mesmo uma forma simples para o fazer.

Através do os.system consegui aceder ao script e carregar o mesmo como pretendia.

Necessito agora é de abrir um ficheiro .pdf através de umas das opções do menu, mas para este não estou a conseguir.

Obrigado.

Editado por Psycho_Mind

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Psycho_Mind

Experimenta:

os.startfile("mydoc.pdf")

Dessa forma não consegui... mas entretanto experimentei com o os.system('/caminho/ficheiro.pdf') e já consegui.

Obrigado.

Como tenho de ter o programa protegido com palavra passe coloquei para o codigo deste menu o seguinte:

while True:
pw = raw_input("\nEnter the password: ")
if pw.encode('rot13') == 'avkba': #avkba 'connects' to name of encrypted password
    print("Password is correct")
    break
else:
    print("Password did not match, try again!")

Encripto a password com outro script que tenho, e funciona tudo bem, mas quando insiro a password na linha de comandos a mesma fica visivel, o que é uma falha problemática em termos de segurança. Há alguma forma de ocultar estes carateres ao serem inseridos na linha de comandos ?

Editado por thoga31
GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Pedro C.
Dessa forma não consegui... mas entretanto experimentei com o os.system('/caminho/ficheiro.pdf') e já consegui.

É estranho. Penso que o os.system apenas abre um processo especifico ao invés que o startfile fica na mesmo. Em teoria deveriam ambos resultar, se bem que o startfile, pelo motivo que falei anteriormente, é um pouco mais "gracioso".

Há alguma forma de ocultar estes carateres ao serem inseridos na linha de comandos ?

Nunca usei mas em python, geralmente, há sempre alguma coisa feita sobre o assunto. Vê isto: http://docs.python.org/2/library/getpass.html#getpass.getpass

Foi feito especificamente para o tipo de problema que estás a tratar.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Psycho_Mind

É estranho. Penso que o os.system apenas abre um processo especifico ao invés que o startfile fica na mesmo. Em teoria deveriam ambos resultar, se bem que o startfile, pelo motivo que falei anteriormente, é um pouco mais "gracioso".

Nunca usei mas em python, geralmente, há sempre alguma coisa feita sobre o assunto. Vê isto: http://docs.python.org/2/library/getpass.html#getpass.getpass

Foi feito especificamente para o tipo de problema que estás a tratar.

Depois ainda com tempo ver qual o problema relacionado com o startfile.

Vou assim ver do que referiste sobre a password. Obrigado.

Aproveitando, sabes se será preferivel utilizar o optparse para utilizar ao invés deste menu 'tradicional' que estou a implementar ? Ouvi falar sobre o mesmo, mas não sei será melhor e se será facil de implementar.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Pedro C.

Nunca usei o optparse, mas pelo que vi é um automatismo para desenvolvimento rápido de software baseado na consola. Isto dá jeito quando tens muitos argumentos e pouco tempo para fazeres o interface.

Pessoalmente eu gosto de ter muito controlo sobre o interface dos softwares que faço principalmente se eu souber que os seus utilizadores nunca mexeram em python e podem precisar de mais informação ou opções que um módulo como o optparse permite (pelo menos facilmente).

A minha sugestão é que uses o teu próprio código "tradicional" e se quiseres melhorá-lo basta programares esses melhoramentos. Para a esmagadora maioria dos casos serve perfeitamente.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Psycho_Mind

Nunca usei o optparse, mas pelo que vi é um automatismo para desenvolvimento rápido de software baseado na consola. Isto dá jeito quando tens muitos argumentos e pouco tempo para fazeres o interface.

Pessoalmente eu gosto de ter muito controlo sobre o interface dos softwares que faço principalmente se eu souber que os seus utilizadores nunca mexeram em python e podem precisar de mais informação ou opções que um módulo como o optparse permite (pelo menos facilmente).

A minha sugestão é que uses o teu próprio código "tradicional" e se quiseres melhorá-lo basta programares esses melhoramentos. Para a esmagadora maioria dos casos serve perfeitamente.

Mas o optparse permite ver informação adicional para os comandos a serem executados, mas não funciona tanto como menu 'tradicional' como o que estava a implementar, correto ? Tendo assim de carregar sempre separadamente cada um dos scripts ou estou enganado ?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Pedro C.
Mas o optparse permite ver informação adicional para os comandos a serem executados, mas não funciona tanto como menu 'tradicional' como o que estava a implementar, correto ?

Tanto quanto sei sim, mas mais uma vez chamo a atenção que nunca usei esse módulo (aliás neste momento a biblioteca mais recente é o argparse, o opt foi descontinuado).

Tendo assim de carregar sempre separadamente cada um dos scripts ou estou enganado ?

Não faço ideia, mas se tivesse de apostar diria que existe a possibilidade de meter mais de um script no mesmo parser. Talvez até fazendo um parser de parsers. Então mas não podes juntar os teus scripts só num?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Psycho_Mind

Neste caso como são coisas distintas convem ter os scripts separados, dai necessitar do menu, até porque depois cada um irá retornar dados que carregarei diretamente do menu para ser mais simples e a coisa sempre ter mais para mostrar :)

Obrigado pela ajuda, vou ver também o argparse.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Psycho_Mind

Não tinha pensado na altura, mas apercebi-me agora que tendo password para o script menu, quando dentro dos scripts que chamo a partir do mesmo faço os.system("python menu.py") para poder dizer que não quero continuar a utilizar este script onde estou e retornar ao do menu, ele voltará a pedir para inserir a password, o que não dá muito jeito visto que o utilizador já teria introduzido ao iniciar, não faz sentido estar sempre a faze-lo.

Qual poderia ser a melhor forma para resolver isto? Ao invés de ter os.system("python menu.py") para o script não há forma de meter apenas para um função dentro de um script ?

Resolvido... afinal basta fazer:

from nome_script import nome_função

(...)

os.system(mome_função())

Editado por Psycho_Mind

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.