1

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_ 関数を使用する必要がありますか、それとも名前を「手動」と「自動」のままにしておくのは悪い考えですか?

4

0 に答える 0