argparse
メーラー スクリプト用の Unix スタイルの引数解析を作成する必要があるため、作業を開始しました。
ファイル名メーラーを提供する「auto」オプションを使用すると、ファイル名として受信したスクリプトを実行し、準備されたメールを取得して送信するだけです。2 番目のモード--manual
では、任意のメールを最初から作成できる必要があります。コンテンツとして 1 つのファイル、いくつかの添付ファイル、メーリング リストを提供するためのいくつかのオプションです。私は本当にそこで--long_opt
慣習を使いたかったのですが (そして多分それ-short_opt
も)、理解できればサブパーサーを使うべきです。
サブパーサーのような名前を付けることは可能です'--name'
か'-n'
? 今のところ、そうではないと思います-エラーがあります。
使用例:
(1) python script.py --auto 'anotherScriptName.py'
(2) python script.py --manual --content 'htmlcontent.txt' --attach 'file1.jpg' 'file2.xlsx' --mail-All
(3) python script.py --manual --content 'htmlcontent.txt' --mail-to 'mail1@gmail.com' 'mail2@yahoo.com'
(4) python script.py --manual --content 'htmlcontent.txt' --attach 'file1.txt' --mail-g ALL_DEVELOPERS
広告。4) ALL_DEVELOPERS は文字列または整数 (データベース内のグループのキー) です。
以下のコード:
parser = argparse.ArgumentParser(description='Standard UNIX-like option parser for customizing script')
subparsers = parser.add_subparsers()
p = subparsers.add_parser('--manual') ### HERE '--manual'
それは素晴らしいことですが、ここで解析する多くの引数が必要であり (すべてが必要になります)、2 番目のオプションでは、すべての作業を行うスクリプトを含むファイルへのパスが 1 つだけ必要です。
parser.add_argument('--manual', action='store_true', dest = 'mode', default = False)
私が持っているもの:
p.add_argument('--content', action = 'store', dest = 'content', require=True, help = "no help for you, it's just path to html content")
p.add_argument('--attach', action = 'store', dest = 'attachments', nargs='*', help = "attachments")
p.add_argument('--mail', '-m', choices=['-All', '-fromFile', '-group', '-to'], dest = 'mailOpt', require=True)
p.add_argument( dest = 'mails', nargs='*') # 0 args if -All selected, raise error in other case
p2 = subparsers.add_parser('--auto') # Like '--manual'
p2.add_argument('--filename', action='store')
それが不可能な場合は、_parse_known_args_ 関数を使用する必要がありますか、それとも名前を「手動」と「自動」のままにしておくのは悪い考えですか?