【Python】 Python ~ 基本編 / コマンドライン引数 ~

■ はじめに

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