167
166

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Pythonでコマンドライン引数を受け取る

Last updated at Posted at 2018-03-18

コマンドライン引数受け取ってそれを処理する問題が出たときに、
そういえば、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
167
166
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
167
166

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?