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、例
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""
1、clickモジュールの使用
このモジュールの使い方は、私の前のブログに書いてありますが、参考にしてください.https://www.cnblogs.com/Zzbj/p/11309130.html
2、getoptモジュールの使用
getoptモジュールは、短いオプションと長いオプションの2つのフォーマットがあります.短いオプションのフォーマットは「-」に単一のアルファベットオプションを追加します.長いオプションは「--」に単語を追加します.
3、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""