Posso executar comandos da linha de comando em um script python?

4

Desculpe, sou uma espécie de noob nisso:

Basicamente eu baixei este pacote que lida com arquivos de texto que são executados a partir do terminal, mas o comando que eu preciso leva em dois argumentos. Eu também preciso fazer isso muitas vezes (5000 +).

Eu preciso obter esses argumentos com um script python e fazer um loop muitas vezes usando o python. Então, eu poderia obter os argumentos dentro do script python, executar a linha de linha de comando e fazer um loop? Como?

Obrigado!

    
por confoosed 12.06.2013 / 14:49

2 respostas

5

Aqui está um peixe ...

import popen2, sys

def loopy_subprocess(arga, argb, iterations, command = 'echo'):
    for i in range(int(iterations)):
        p = popen2.Popen4((command, arga, argb))
        p.wait()
        print(p.fromchild.readlines())

if __name__ == '__main__':
    try:
        arga = sys.argv[1]
        argb = sys.argv[2]
        iterations = sys.argv[3]
    except:
        print("You didn't supply enough arguments\n"+\
              "Usage: python script.py arga argb iterations\n"+\
              "Warning - unsafe.  No input validation and doesn't account for spaces in arguments\n"+\
              "Optionally supply the command to be run as a final argument\n")
        quit()
    try:
        command = sys.argv[4]
        loopy_subprocess(arga, argb, iterations, command)
    except:
        loopy_subprocess(arga, argb, iterations)
    
por RobotHumans 12.06.2013 / 15:35
3

Provavelmente, a maneira mais fácil de fazer isso é acessar os argumentos da linha de comando de dentro do python e também fazer o loop dentro do python. Você poderia examinar sys.argv do módulo sys para acessar os argumentos da linha de comando. Se bem me lembro, isso deve permitir que você faça algo como:

python scriptname.py argument1 argument2

e depois acessar os argumentos dentro de scriptname.py usando

import sys
arg_1 = sys.argv[1]
arg_2 = sys.argv[2]

Você também pode desenvolver uma pilha inteira de comandos facilmente com uma ferramenta como precipício (Estrutura de Formulação de Interface de Linha de Comando).

    
por don.joey 12.06.2013 / 14:55