メインコンテンツへスキップ

Python コマンドライン引数 #3 argparser #2

    株式会社リュディアです。引き続き argparse についてまとめてみます。

    前回までの Python のコマンドライン引数についてのまとめへのリンクは以下を参考にしてください。

    公式の argparse チュートリアルの日本語版はこちらです。

    前回に基本事項はまとめたので、今回は応用編を扱います。まずベースになるスクリプトは以下のものとします。

    import argparse
    
    if __name__=='__main__':
       parser = argparse.ArgumentParser()
    
       parser.add_argument('arg1', help = '')
       parser.add_argument('arg2', help = '')
    
    
       args = parser.parse_args()
    
       print('arg1 : ', args.arg1)
       print('arg2 : ', args.arg1)

    最初は型指定をしたい場合を考えます。まずコマンドライン引数で指定された値はデフォルトで文字列型であることを意識してください。そのため他の型として受け取りたい場合は指定が必要です。例えば以下のようになります。ちなみに int 以外の型を指定するとエラーが発生します。

    import argparse
    
    if __name__=='__main__':
       parser = argparse.ArgumentParser()
    
       parser.add_argument('arg1', type = int, help = '')
       parser.add_argument('arg2', type = int, help = '')
    
    
       args = parser.parse_args()
    
       print('arg1 : ', args.arg1, type(args.arg1))
       print('arg2 : ', args.arg2, type(args.arg2))
    
    
    # python CommandArgs.py 10 5
    # arg1 :  10 <class 'int'>
    # arg2 :  5 <class 'int'>
    # 
    # 引数として整数を指定すべきところを文字キャラクタを指定した場合
    # python CommandArgs.py a c
    # usage: CommandArgs.py [-h] arg1 arg2
    # CommandArgs.py: error: argument arg1: invalid int value: 'a'

    次はデフォルト値を設定したい場合です。オプションの場合はデフォルト値を設定しておけばプログラミングが簡単になることが多いですよね。

    import argparse
    
    if __name__=='__main__':
       parser = argparse.ArgumentParser()
    
       parser.add_argument('arg1', type = str, help = '')
       parser.add_argument('arg2', type = str, default = 'output.txt', help = '')
    
    
       args = parser.parse_args()
    
       print('arg1 : ', args.arg1, type(args.arg1))
       print('arg2 : ', args.arg2, type(args.arg2))
    
    # python CommandArgs.py input.txt
    # arg1 :  input.txt <class 'str'>
    # arg2 :  output.txt <class 'str'>

    最後に選択肢を表示し、その中から選択させたい場合です。

    import argparse
    
    if __name__=='__main__':
       parser = argparse.ArgumentParser()
    
       parser.add_argument('arg1', type = str, choices = ['a','b','c'], help = '')
    
       args = parser.parse_args()
    
       print('arg1 : ', args.arg1, type(args.arg1))
    
    
    # % python CommandArgs.py a
    # arg1 :  a <class 'str'>
    #
    # 選択肢にない d を指定した場合
    # % python CommandArgs.py d
    # usage: CommandArgs.py [-h] {a,b,c}
    # CommandArgs.py: error: argument arg1: invalid choice: 'd' (choose from 'a', 'b', 'c')

    今回は応用編として少々複雑なコマンドライン引数の使い方についてまとめました。argparse には他の機能もあるのですがここまでの内容で多くのプログラミングはカバーできるのではないかと思います。

    では、ごきげんよう。



     
     
    いろいろなテクノロジーを扱うスタートアップです。

    あなたへのおすすめ