是否可以将subparser(来自Python argparse)命名为' - name'甚至' -n'?

时间:2015-09-11 08:26:23

标签: python argparse subparsers

我已经开始使用argparse,因为我必须为邮件程序脚本编写Unix风格的参数解析。

使用' auto'选项,提供文件名邮件程序,它将执行作为文件名接收的脚本,抓取准备好的邮件,然后发送它。在第二种模式--manual中,它应该能够从头开始构建任何邮件 - 一个文件作为内容,几个附件,几个选项来提供邮件列表。我真的想在那里使用--long_opt约定(也许-short_opt),但如果我明白我应该使用subparsers。

是否可以为'--name'甚至'-n'命名subparser?现在,我猜不是 - 我有一个错误。

示例用途:

(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可以是string或int(数据库中组的键)

以下代码:

parser = argparse.ArgumentParser(description='Standard UNIX-like option parser for customizing script')

subparsers = parser.add_subparsers()
p = subparsers.add_parser('--manual') ### HERE '--manual'

那会很棒,但是我想要在这里解析许多参数(并且所有这些都是必需的)而在第二个选项中我只需要一个文件路径来完成所有工作:

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_函数还是错误的想法,只需留下姓名'手册'和'汽车'因为它们看起来足够清楚了吗?

0 个答案:

没有答案