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_true
やstore_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
参考サイト
- argparse公式docs docs.python.org