コマンドライン引数の取得
以下のような仕様
- sysパッケージをインポート
- sys.argvに引数のリストが格納されている
- 引数の1つ目(ゼロ番目)は常にコマンド自身
以下のスクリプトを実行してみる。
| 1 2 3 4 5 6 7 8 | import sys args = sys.argv print('number of afgs {}'.format(len(args))) print(args) for arg in args:     print(arg) | 
引数リストの先頭はコマンド自身(Windowsの\はエスケープされている)。
| 1 2 3 4 | C:\>cmd_arg.py number of afgs 1 ['C:\\cmd_arg.py'] C:\cmd_arg.py | 
引数は入力したままの形。
| 1 2 3 4 5 6 7 | C:\>cmd_arg.py 123 abc 'abc' number of afgs 4 ['C:\\cmd_arg.py', '123', 'abc', "'abc'"] C:\cmd_arg.py 123 abc 'abc' | 
引数がない場合の処理と、数値・文字別の処理を組み込んだ例。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import sys args = sys.argv print('number of afgs {}'.format(len(args))) args = args[1:] if len(args) == 0:     print('no arguments')     sys.exit() print(args) for arg in args:     if arg.isdecimal():         print('{} is decimal -> {}'.format(arg, int(arg) * 2))     else:         print('{} is not decimal'.format(arg)) | 
実行結果。
| 1 2 3 4 5 6 7 8 9 | C:\>cmd_arg_dight_check.py number of afgs 1 no arguments C:\>cmd_arg_dight_check.py ABC 123 number of afgs 3 ['ABC', '123'] ABC is not decimal 123 is decimal -> 246 |