web-dev-qa-db-ja.com

pythonスクリプト内でコマンドラインコマンドを実行できますか?

申し訳ありませんが、私はこれにちょっと慣れています:

基本的に、ターミナルから実行されるテキストファイルを扱うこのパッケージをダウンロードしましたが、必要なコマンドは2つの引数を取ります。また、これを何度も行う必要があります(5000回以上)。

これらの引数はpythonスクリプトで取得する必要があり、pythonを使用して何度もループできます。それで、pythonスクリプト内で引数を取得し、コマンドラインを実行し、それをループできますか?どうやって?

ありがとう!

4
confoosed

ここに魚がいます...

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

おそらくこれを行う最も簡単な方法は、python内からコマンドライン引数にアクセスし、Python内でループを実行することです。 sysモジュールからsys.argvを調べて、コマンドライン引数にアクセスできます。正しく思い出せば、次のようなことができるはずです。

python scriptname.py argument1 argument2

次に、を使用してscriptname.py内の引数にアクセスします

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

cliff (Command Line Interface Formulation Framework)などのツールを使用して、コマンドのスタック全体を簡単に開発することもできます。

3
don.joey