コマンドライン引数の取得
以下のような仕様
- 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 |