コマンドライン引数受け取ってそれを処理する問題が出たときに、
そういえば、Pythonでコマンドライン引数受け取るのやったことなくて、
やらかしたので、メモ。(問題の根幹部分ではなかったから助かったが。)
コマンドライン引数を受け取る
sysモジュールのargvを使用する。コマンドライン引数のリストが取得できる。
commandline_args.py
import sys
args = sys.argv
print(args[0])
print(args[1])
print(args[2])
$ python commandline_args.py a b
で実行すると、
出力は、
commandline_args.py
a
b
となる。
上記からわかるように、
リストの1つ目(args[0])は、実行ファイル名になる。
実際の使用時
実際使用する際は、おそらく、いくつの引数を受け取ったかを確認し、
さらに、期待する形の入力かをチェックする必要がありそう。
fizzBuzz.py
import sys
def fizzBuzz(n):
if n <= 0:
return ()
else:
fizzBuzz(n-1)
if n % 3 == 0 and n % 5 == 0:
print(n, ' : ', 'FizzBuzz')
elif n % 3 == 0:
print(n, ' : ', 'Fizz')
elif n % 5 == 0:
print(n, ' : ', 'Buzz')
else:
print(n, ' : ', n)
return ()
if __name__ == '__main__':
args = sys.argv
if 2 <= len(args):
if args[1].isdigit():
fizzBuzz(int(args[1]))
else:
print('Argument is not digit')
else:
print('Arguments are too short')
- 引数無し
引数無しエラー
$ python command_line_args.py
Arguments are too short
- 引数が数値じゃない
引数タイプエラー
$ python command_line_args.py a
Argument is not digit
- 引数が数値
正常実行
$ python command_line_args.py 15
1 : 1
2 : 2
3 : Fizz
4 : 4
5 : Buzz
6 : Fizz
7 : 7
8 : 8
9 : Fizz
10 : Buzz
11 : 11
12 : Fizz
13 : 13
14 : 14
15 : FizzBuzz
- 引数が数値で、複数存在
最初の1つを使用し実行
$ python command_line_args.py 3 5 15
1 : 1
2 : 2
3 : Fizz