web-dev-qa-db-fra.com

Puis-je exécuter des commandes de ligne de commande dans un script python?

Désolé je suis un peu un noob à ceci:

En gros, j'ai téléchargé ce paquet qui traite les fichiers texte exécutés depuis le terminal, mais la commande dont j'ai besoin prend deux arguments. J'ai aussi besoin de le faire plusieurs fois (plus de 5000).

J'ai besoin de récupérer ces arguments avec un script python, et je peux le répéter plusieurs fois en utilisant python. Pourrais-je donc obtenir les arguments dans le script python, exécuter la ligne de commande et la mettre en boucle? Comment?

Merci!

4
confoosed

Voici un poisson ...

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 __== '__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)
5
RobotHumans

Pour ce faire, le moyen le plus simple consiste probablement à accéder aux arguments de ligne de commande à partir de python et à effectuer la boucle dans python. Vous pouvez consulter sys.argv à partir du module sys pour accéder aux arguments de la ligne de commande. Si je me souviens bien, cela devrait vous permettre de faire quelque chose comme:

python scriptname.py argument1 argument2

puis accédez aux arguments dans scriptname.py en utilisant

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

Vous pouvez également développer facilement toute une pile de commandes avec un outil tel que cliff (cadre de formulation d'interface de ligne de commande).

3
don.joey