Psycho_Mind Posted April 7, 2013 at 03:39 PM Report #502030 Posted April 7, 2013 at 03:39 PM (edited) 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. Edited April 7, 2013 at 05:51 PM by Psycho_Mind
Pedro C. Posted April 8, 2013 at 02:49 PM Report #502144 Posted April 8, 2013 at 02:49 PM Experimenta: os.startfile("mydoc.pdf")
Psycho_Mind Posted April 8, 2013 at 04:14 PM Author Report #502176 Posted April 8, 2013 at 04:14 PM (edited) 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 ? Edited April 8, 2013 at 08:53 PM by thoga31 GeSHi
Pedro C. Posted April 9, 2013 at 02:18 PM Report #502348 Posted April 9, 2013 at 02:18 PM 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.
Psycho_Mind Posted April 9, 2013 at 04:29 PM Author Report #502365 Posted April 9, 2013 at 04:29 PM É 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.
Pedro C. Posted April 9, 2013 at 06:37 PM Report #502385 Posted April 9, 2013 at 06:37 PM 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.
Psycho_Mind Posted April 10, 2013 at 09:26 AM Author Report #502466 Posted April 10, 2013 at 09:26 AM 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 ?
Pedro C. Posted April 10, 2013 at 02:40 PM Report #502541 Posted April 10, 2013 at 02:40 PM 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?
Psycho_Mind Posted April 10, 2013 at 03:51 PM Author Report #502569 Posted April 10, 2013 at 03:51 PM 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.
Psycho_Mind Posted April 13, 2013 at 02:55 PM Author Report #503087 Posted April 13, 2013 at 02:55 PM (edited) 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()) Edited April 13, 2013 at 03:28 PM by Psycho_Mind
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now