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)