3

私はPythonに比較的慣れていません。スクリプトを作成し、次のようなパラメーターを渡したいです。

myscript.py --arg1=hello --arg2=world

スクリプトでは、引数 arg1 と arg2 にアクセスしたいと考えています。この方法でコマンド ライン パラメータにアクセスする方法を説明できる人はいますか?

4

4 に答える 4

5

Argparseは標準ライブラリの一部です (バージョン 2.7 および 3.2 以降)。これは、すべてのコマンド ライン解析を処理するために使用するモジュールですが、optparse (現在は非推奨) とgetoptもあります。

以下は、argparse の使用方法の簡単な例です。

import sys, argparse

def main(argv=None):

    if argv is None:
        argv=sys.argv[1:]

    p = argparse.ArgumentParser(description="Example of using argparse")

    p.add_argument('--arg1', action='store', default='hello', help="first word")
    p.add_argument('--arg2', action='store', default='world', help="second word")

    # Parse command line arguments
    args = p.parse_args(argv)

    print args.arg1, args.arg2

    return 0

if __name__=="__main__":
    sys.exit(main(sys.argv[1:]))

編集add_arguments: makearg1とオプションの引数の呼び出しで先頭の「--」を使用しているためarg2、デフォルト値を指定したことに注意してください。2 つの引数を要求するようにプログラムする場合は、これらの先頭の 2 つのハイフンを削除すると、それらが必須の引数になり、オプションは必要なくなりdefault=...ます。(厳密に言えば、 がデフォルトのアクションであるため、このaction='store'オプションも必要ありません)。store

于 2011-12-20T21:44:06.467 に答える
2

http://docs.python.org/library/argparse.html#module-argparse

簡単な例が役立ちます

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                   help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
                   const=sum, default=max,
                   help='sum the integers (default: find the max)')

args = parser.parse_args()
print args.accumulate(args.integers)
于 2011-12-20T21:42:33.610 に答える
1

Python は、コマンド ライン引数を解析する 3 つの異なる方法を提供します。これには、パラメーター リストへの raw アクセスを使用して自分で記述したものは含まれません。

http://docs.python.org/dev/whatsnew/2.7.html#pep-389-the-argparse-module-for-parsing-command-lines

コマンドライン引数を解析するための argparse モジュールが、optparse モジュールのより強力な代替として追加されました。

これは、Python がコマンドライン引数を解析するための 3 つの異なるモジュール (getopt、optparse、および argparse) をサポートするようになったことを意味します。getopt モジュールは C ライブラリの getopt() 関数に非常に似ているため、最終的に C で書き直される Python プロトタイプを作成する場合に引き続き役立ちます。optparse は冗長になりますが、スクリプトが多いため削除する予定はありません。これらのスクリプトを自動的に更新する方法はありません。(argparse API を optparse のインターフェースと一致させることが議論されましたが、面倒で難しいとして却下されました。)

つまり、新しいスクリプトを作成していて、以前のバージョンの Python との互換性について心配する必要がない場合は、optparse の代わりに argparse を使用してください。

于 2011-12-20T21:44:50.800 に答える
1

標準ライブラリに含まれているargparseモジュールを確認してください。慣れれば簡単で、非常に堅牢です。ここにチュートリアルがあります。optparse または getopt モジュールではなく、これを使用することをお勧めします。

モジュールを使用したくないが引数にアクセスしたい場合は、sys モジュールをチェックしてください。sys.argv を見たいと思うでしょう。

于 2011-12-20T21:38:59.537 に答える