sys.srgv を使う方法
C言語などと類似した引数のハンドリング
test-srgv.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
argc = len(sys.argv)
print "引数の数 = %d" % argc
# argvリストを順に展開して表示していく
i = 0
for item in sys.argv:
print "argv[%d] = %s" % (i, item)
i = i + 1
# 引数の数より、1つずつargvリストを表示していく
for i in range(0, argc):
print "argv[%d] = %s" % (i, sys.argv[i])
このプログラムの実行結果
$ python test-argv.py aa "bb cc" 引数の数 = 3 argv[0] = test-argv.py argv[1] = aa argv[2] = bb cc argv[0] = test-argv.py argv[1] = aa argv[2] = bb cc
argparse を使う方法
test-argparse.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import argparse
parser = argparse.ArgumentParser(description='argparse テストプログラム')
parser.add_argument('str1', nargs='?', help='文字列の引数(str1)')
parser.add_argument('-a', help='文字列(a)', metavar='str_a')
parser.add_argument('-x', help='スイッチ(x)', action="store_true")
args = parser.parse_args()
if args.str1 is not None:
print "文字列(str1) = %s" % args.str1
else:
print "文字列(str1) は指定されませんでした"
if args.a is not None:
print "文字列(a) = %s" % args.a
else:
print "文字列(a) は指定されませんでした"
if args.x is True:
print "スイッチ(x) = True"
else:
print "スイッチ(x) = False"
このプログラムの実行結果
$ python test-argparse.py -a "aa bb" cc -x 文字列(str1) = cc 文字列(a) = aa bb スイッチ(x) = True
ヘルプメッセージを表示する
$ python test-argparse.py -h usage: test-argparse.py [-h] [-a str_a] [-x] [str1] argparse テストプログラム positional arguments: str1 文字列の引数(str1) optional arguments: -h, --help show this help message and exit -a str_a 文字列(a) -x スイッチ(x)