疑念は探究の動機であり、探究の唯一の目的は信念の確定である。

数学・論理学・哲学・語学のことを書きたいと思います。どんなことでも何かコメントいただけるとうれしいです。特に、勉学のことで間違いなどあったらご指摘いただけると幸いです。 よろしくお願いします。くりぃむのラジオを聴くこととパワポケ2と日向坂46が人生の唯一の楽しみです。

Pythonでコマンドライン引数を使って実行する方法

概要
コマンドライン引数を使ってPythonのファイルを実行する方法を示す。
コマンドライン引数を実行するためにはargparseをインポートすればよい。


ソースコード arg_parse.py

import argparse
parser = argparse.ArgumentParser()

num1 = 6
num2 = 3

#### Caution:
#### The command '-h' does not allowed
#### because '-h' is preserved that '-h' is '--help'.
parser.add_argument('-a', '--add', help='operation add', action='store_true')
parser.add_argument('-s', '--subtraction', help='operation subtraction', action='store_true')
parser.add_argument('-m', '--multiplication', help='operation multiplication', action='store_true')
parser.add_argument('-d', '--division', help='operation division', action='store_true')
parser.add_argument('-taa', '--two_args_add', nargs=2, type=int, help='two arguments add')

parser.add_argument('-t', '--test_one_arg', type=int, default=0, help='test one argument with default')

args = parser.parse_args()
print('args = {}'.format(args))
print('num1 = {}'.format(num1))
print('num2 = {}'.format(num2))

if args.add:
    print('num1 + num2 = {}'.format(num1 + num2))

if args.subtraction:
    print('num1 - num2 = {}'.format(num1 - num2))

if args.multiplication:
    print('num1 * num2 = {}'.format(num1 * num2))

if args.division:
    print('num1 / num2 = {}'.format(num1 / num2))

if args.two_args_add:
    args1 = args.two_args_add[0]
    args2 = args.two_args_add[1]
    print('args1 + args2 = {} + {} = {}'.format(args1, args2, args1 + args2))

####
print('type(args) = {}'.format(type(args)))
print('vars(args) = {}'.format(vars(args)))
print('type(vars(args)) = {}'.format(type(vars(args))))

####
dict_args = vars(args)
bool_flag = False
for var in list(dict_args.values()):
    if var:
        bool_flag = True

if not bool_flag:
    print('NO OPTION')

####
for key, value in dict_args.items():
    if value:
       print('key: {}, value: {}'.format(key, value))


実行結果
(I) NO OPTIONS:
f:id:yoheiwatanabe0606:20210228223042p:plain

(II) OPTION: f:id:yoheiwatanabe0606:20210228223202p:plain

(III) TWO ARGUMENTS:
f:id:yoheiwatanabe0606:20210228223404p:plain

(IV) help option:
f:id:yoheiwatanabe0606:20210228223451p:plain

(未完)