シ〜らかんす

プログラミングとか、カメラとか。

【Python】argparseで任意引数を受け取る方法

pythonで引数を受け取る方法

argparseというライブラリを使うと、簡単に引数を足すことができます。

import argparse

def main(start_at, end_at):
    do_something

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("start_at", help="対象年月日のはじめ")
    parser.add_argument("end_at", help="対象年月日の終わり")
    args = parser.parse_args()

    main(args.start_at, args.end_at)

sysを使って引数を受け取ることもできますが、引数を扱う上で便利な機能がargparseの方が充実している印象です。

  • add_argumentメソッドのhelp引数に、説明を加えておくことができ、ドキュメンテーションラク
  • add_argumentメソッドのaction引数に、store_truestore_false など入れて、型や値を指定できる etc...

任意の引数を受け取るには?

上記のコードでは、start_atとend_atという引数は必ずなくてはならず、存在しないとエラーになってしまいます。

引数の付与は任意、としたい場合は、下記のように書けます。

import argparse

def main(start_at, end_at):
    do_something

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("--start_at", help="対象年月日のはじめ")
    parser.add_argument("--end_at", help="対象年月日の終わり")
    args = parser.parse_args()

    main(args.start_at, args.end_at)

add_argumentメソッドで引数の名前を指定する時に、名前の直前に -- (ハイフン二つ)を足しています。

こうすることで、start_atとend_atはあってもなくてもいい、任意の引数として設定されました。

任意引数を与えたいときのコマンドの書き方

任意引数は、コマンドを書く時に以下のように「引数ありますよー」ということを明記してやる必要があるので注意してください。

python sample.py --start_at=2019-03-19 --end_at=2019-03-20

これがもし必須の引数の場合は、以下のような書き方ができます。

pythono sample.py 2019-03-19 2019-03-20

参考サイト