Quantcast
Channel: Tópicos
Viewing all articles
Browse latest Browse all 11336

Executar comandos do terminal num script python

$
0
0
@PsySc0rpi0n, Algumas clarificações: em Python as listas declaram-se com [], e as strings tanto podem ser "assim" como 'assim' (pessoalmente, prefiro 'assim', mas é indiferente). Mas vamos agora ao que interessa: Bem, tu conseguiste livrar-te de um erro, mas agora apareceu outro: IndexError: list index out of range. Muito provavelmente isso deve-se ao sys.argv[1] que estás a utilizar ali no código -- estavas a invocar o script passando-lhe um argumento? Porque se não estivesses, o erro estaria completamente justificado. De qualquer modo, e para que não fique incerteza no ar relativamente à forma como as coisas funcionam (que é simples!), ficam aqui dois pequenos scripts que simulam o teu problema facilmente: #!/usr/bin/python3 # Este será o ficheiro 'rigup' from sys import argv print('{} called with arguments {!r}'.format(argv[0], argv[1:])) #!/usr/bin/python3 # E este será o ficheiro 'test.py' import sys import subprocess feat_codes = [ '0x1c001', '0x1c002', '0x1c004', '0x1c008', '0x1c020', '0x1c040', '0x1c080', '0x1c0ff' ] for var in feat_codes: subprocess.call([ './rigup', 'license', sys.argv[1], var ]) E agora, assumindo que temos estes ficheiros numa directoria psy, aqui fica a transcrição da sessão no terminal: ~/psy $ # Cá estão os ficheiros que criámos ~/psy $ ls -lh total 8,0K -rw-rw-r-- 1 apc apc 107 Out 2 12:08 rigup -rw-rw-r-- 1 apc apc 244 Out 2 11:57 test.py ~/psy $ ~/psy $ # Vamos permitir a execução do 'rigup' ~/psy $ chmod +x rigup ~/psy $ ~/psy $ # Vamos testar o rigup ~/psy $ ./rigup um dois tres quatro ./rigup called with arguments ['um', 'dois', 'tres', 'quatro'] ~/psy $ ~/psy $ # E agora vamos executar o test.py sem argumentos adicionais ~/psy $ python3 test.py Traceback (most recent call last): File "test.py", line 8, in <module> call([ './rigup', 'license', argv[1], code ]) IndexError: list index out of range ~/psy $ # ^-- Cá está o erro que obtiveste da última vez ~/psy $ ~/psy $ # Mais uma vez, agora com o argumento adicional ~/psy $ python3 test.py argumento-adicional ./rigup called with arguments ['license', 'argumento-adicional', '0x1c001'] ./rigup called with arguments ['license', 'argumento-adicional', '0x1c002'] ./rigup called with arguments ['license', 'argumento-adicional', '0x1c004'] ./rigup called with arguments ['license', 'argumento-adicional', '0x1c008'] ./rigup called with arguments ['license', 'argumento-adicional', '0x1c020'] ./rigup called with arguments ['license', 'argumento-adicional', '0x1c040'] ./rigup called with arguments ['license', 'argumento-adicional', '0x1c080'] ./rigup called with arguments ['license', 'argumento-adicional', '0x1c0ff'] ~/psy $ # Funcionou. E é isto.

Viewing all articles
Browse latest Browse all 11336

Trending Articles