私はPythonに比較的慣れていません。スクリプトを作成し、次のようなパラメーターを渡したいです。
myscript.py --arg1=hello --arg2=world
スクリプトでは、引数 arg1 と arg2 にアクセスしたいと考えています。この方法でコマンド ライン パラメータにアクセスする方法を説明できる人はいますか?
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
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)
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 を使用してください。