Pythonのgetoptモジュール

9153 ワード

一、pythonスクリプトにコマンドラインパラメータをサポートさせる方法
1、clickモジュールの使用
このモジュールの使い方は、私の前のブログに書いてありますが、参考にしてください.https://www.cnblogs.com/Zzbj/p/11309130.html
 
2、getoptモジュールの使用
getoptモジュールは、短いオプションと長いオプションの2つのフォーマットがあります.短いオプションのフォーマットは「-」に単一のアルファベットオプションを追加します.長いオプションは「--」に単語を追加します.
 
3、clickとgetoptの違い
  • clickモジュールはサードパーティのモジュールであり、getoptは内蔵モジュール
  • である.
  • clickモジュールの機能は比較的に強くて、持参した--helpパラメータ、注意機能は比較的に優美です
  • clickモジュールは、コマンドラインパラメータをいくつか制限することができる
  • getoptモジュールは内蔵モジュールであり、いくつかの簡単な要求に対して比較的便利である
  •  
    二、getoptモジュールの使用
    1、紹介
    getoptモジュールはsysモジュールと組み合わせて使用する必要があります.どんなに多くの言語でも青白いので、例を見て説明しましょう.
     
    2、例
    #       : test.py
    import sys
    import getopt
    
    
    def help_msg():
        """
               (click             ,    --help)
        :return:        
        """
        print('usage:')
        print('-h, --help: print help message.')
        print('-o, --output: output file')
        print('-c, --cfg: config')
    
    
    def main(argv):
        #         ,    python  ,   
        if len(argv) <= 1:
            help_msg()
            sys.exit(0)
    
        try:
            opts, args = getopt.getopt(argv[1:], 'ho:c:', ['help', 'output=', 'cfg='])
        except getopt.GetoptError as err:
            print(str(err))
            sys.exit(2)
    
        print("    args:%s" % str(args))
    
        for o, a in opts:
            if o in ('-h', '--help'):
                help_msg()
                sys.exit(1)
            elif o in ('-o', '--output'):
                #       
                print("   :%s;   :%s" % (o, a))
            elif o in ('-c', '--cfg'):
                #         
                print("   :%s;   :%s" % (o, a))
            else:
                print('unhandled option')
                sys.exit(3)
    
    
    if __name__ == '__main__':
        main(sys.argv)
    
    
    #        window cmd            :
    python test.py -h
    python test.py --help
    #        
    """
    usage:
    -h, --help: print help message.
    -o, --output: output file
    -c, --cfg: config
    """
    
    python test.py -o a.txt -c config.cfg
    python test.py --output a.txt --cfg config.cfg
    #   
    """
        args:[]
       :-o;   :a.txt
       :-c;   :config.cfg
    
        args:[]
       :--output;   :a.txt
       :--cfg;   :config.cfg
    
    """
    
    
    #         
    python test.py -a
    #   
    """
    option -a not recognized
    """

     
    3、説明
    1.関数の使用
    opts, args = getopt.getopt(argv[1:], 'ho:c:', ['help', 'output=', 'cfg='])
    1,getopt()は処理する関数です.
    2 sys.argv[1:]を使用して最初のパラメータ(実行スクリプトの名前)をフィルタします.
    3,2番目のパラメータ(文字列)は、短いフォーマット、'ho:c:'を表し、各アルファベットは短いフォーマットのコマンドラインパラメータを表し、字の英語の母の後ろには「:」という記号が付いている.
    4,3番目のパラメータ(リスト)は、長いフォーマット,['help','output=','cfg=']を表し、リストの各要素は長いフォーマットのコマンドラインパラメータを表し、長いフォーマット列にもスイッチ状態があり、すなわち後に「=」番号が付いていない.等号がある場合は、後に追加のパラメータが必要であることを示します.この長いフォーマットは「help」がスイッチオプションであることを示しています.「output=」は、後でパラメータを持つべきであることを示します.
    5,getopt関数を呼び出します.関数は、optsとargsの2つのリストを返します.optsは解析されたフォーマット情報である.argsは、フォーマット情報に属さない残りのコマンドラインパラメータ、すなわちgetopt()で定義された長さまたは短いオプション文字および追加パラメータ以外の情報である.optsは2元グループのリストです.各要素は、(オプション列、追加パラメータ)です.追加パラメータがない場合は空白列'.
    6コマンドライン解析エラーが発生するとgetopt.Getopterror異常が放出されます.
     
    2.オプションの書き方
    ショートフォーマット:「-」の後にオプションのアルファベットを付けます.このオプションの追加パラメータがある場合は、スペースで区切ることも、区切らないこともできます.長さは任意で、引用符を使うことができます.長いフォーマット:「--」番号の後ろに単語が付いています.オプションの追加パラメータがある場合は、スペースで区切ることもできますし、「=」でパラメータを追加することもできます.「=」の前後にスペースは使用できません
     
    3.使用
    python test.py--output a.txt--cfg config.cfg hello world""追加情報args:['hello','world']パラメータは:--output;値は:a.txtパラメータは:--cfg;値は:config.cfg""