■ はじめに
Python のコマンドライン引数について、まとめる
■ コマンドライン引数 の扱い方
【1】sysモジュールのargvを利用する 【2】argparseモジュールを利用する
【1】sysモジュールのargvを利用する
使用上の注意
1)第0番目はファイル名で、第1番目以降がコマンドライン引数 2)「sys.arg"s"」ではなく「sys.arg"v"」。
サンプル:demo.py
import sys print("***************") print(sys.argv) print("***************") print("第0引数:" + sys.argv[0]) print("第1引数:" + sys.argv[1]) print("***************") print(sys.argv[0:4]) # ★注意★
実行例
> python demo.py one two three four five
出力結果
*************** ['c:/demo.py', 'one', 'two', 'three', 'four', 'five'] *************** 第0引数:c:/demo.py 第1引数:one *************** ['c:/demo.py', 'one', 'two', 'three']
補足:「print(sys.argv[0:4])」の結果について
['c:/demo.py', 'one', 'two', 'three', 'four']じゃない 理由は「補足:ファイル名を入れたくない場合」に書いてある関連記事を参照のこと。
参考文献
https://qiita.com/orange_u/items/3f0fb6044fd5ee2c3a37
補足:ファイル名を入れたくない場合
* スライスを使う => スライスに関しては、以下の関連記事を参照のこと。
https://dk521123.hatenablog.com/entry/2020/11/14/000000
サンプル
import sys args = sys.argv[1:] print(args)
【2】argparseモジュールを利用する
arg parse (ArgumentParser)でパースする
サンプル1
demo.py
import argparse def main(): # ここ parser = argparse.ArgumentParser() parser.add_argument("--a1") args = parser.parse_args() print("Result:" + args.a1) if __name__ == '__main__': main()
実行例
> python demo.py --a1 hello_world
出力結果
Result:hello_world
サンプル2
demo2.py
import argparse # ここ parser = argparse.ArgumentParser() parser.add_argument("--a1", type=str, help="Hello") parser.add_argument("--a2", type=str, help="World", default=None) args = parser.parse_args() print("Result1:" + args.a1) print("Result2:" + args.a2) a2_list = args.a2.split(',') for val in a2_list: print("Result2(list):" + val.strip())
実行例1:処理実行
> python demo2.py --a1 hello_world --a2 "aaa, bbb, ccc"
出力結果1:処理実行
Result1:hello_world Result2:aaa, bbb, ccc Result2(list):aaa Result2(list):bbb Result2(list):ccc
実行例2:Help
> python demo2.py -h or > python demo2.py --help
出力結果2:Help
usage: demo2.py [-h] [--a1 A1] [--a2 A2] optional arguments: -h, --help show this help message and exit --a1 A1 Hello --a2 A2 World
参考文献
https://qiita.com/kzkadc/items/e4fc7bc9c003de1eb6d0
関連記事
Python ~ 基本編 / 文字列 ~
https://dk521123.hatenablog.com/entry/2019/10/12/075251
Python ~ 基本編 / スライス操作 ~
https://dk521123.hatenablog.com/entry/2020/11/14/000000
Python統合開発環境(IDE)
https://dk521123.hatenablog.com/entry/2019/09/09/122954