Python可以访问argparse选项的metavar吗?
我想知道是否有一种方法可以使用argparse中的metavar,从其他地方获取。例如,有一个-f文件选项和一个-d目录选项。我可以借助-d获取文件.metavar或类似文件吗?Python可以访问argparse选项的metavar吗?,python,argparse,Python,Argparse,我想知道是否有一种方法可以使用argparse中的metavar,从其他地方获取。例如,有一个-f文件选项和一个-d目录选项。我可以借助-d获取文件.metavar或类似文件吗? 也许: 我知道这段代码是错误的(字符串没有metavar,只有运行parser.parse_args()才能设置选项),但我还有几次只想获取metavar,而不需要一堆: meta_file = 'FILE' meta_dir = 'DIR' meta_inquisition = 'SURPRISE' 四处飘荡
也许: 我知道这段代码是错误的(字符串没有metavar,只有运行parser.parse_args()才能设置选项),但我还有几次只想获取metavar,而不需要一堆:
meta_file = 'FILE'
meta_dir = 'DIR'
meta_inquisition = 'SURPRISE'
四处飘荡
谢谢
编辑:s/add\u option/add\u argument/根据,帮助文本可以包含格式说明符,如%(默认)s
,%(类型)s
等。您可以编写%(metavar)s
,并将其扩展为metavar的值(或者如果未指定,则无
)
我不认为有办法获取另一个人的参数metavar。在
argparse
中,它是add\u argument
。此方法返回一个Action
对象(实际上是该对象的子类,具体取决于Action
参数)。您可以访问该对象的各种参数,以便使用,甚至更改。例如:
action1 = parser.add_argument("-f", "--file", metavar = 'FILE',
dest="file_name", default="foo.bar",
help="Name of the %(metavar)s to be loaded")
action2 = parser.add_argument("-d", "--dir", metavar = 'DIR',
dest='file_dir', default=".",
help="Directory of %s if it is not current directory"%action1.metavar)
print(action1.metavar) # read the metavar attribute
action2.metvar = 'DIRECTORY' # change the metavar attribute
帮助
内容如下:
用法:ipython[-h][-f文件][-d目录]
optional arguments:
-h, --help show this help message and exit
-f FILE, --file FILE Name of the FILE to be loaded
-d DIR, --dir DIR Directory of FILE if it is not current directory
我删除了action='store'
,因为这是默认值(不过没什么大不了的)
我将帮助
值更改为使用%(metavar)s
。这用于合并各种操作
属性。最常用于默认值
帮助字符串可以包括各种格式说明符,以避免重复程序名或默认参数等内容。可用的说明符包括程序名、%(prog)s和大多数要添加_argument()的关键字参数,例如%(默认值)s、%(类型)s等:
我正在使用action1.metavar
将文件
放在action2
的帮助行中。这不是常见用法,但我看不出有什么问题
请注意,action1.metavar
在设置解析器时使用一次(用于创建action2
帮助行),然后在格式化帮助时使用一次
In [17]: action2.help
Out[17]: 'Directory of FILE if it is not current directory'
In [18]: action1.help
Out[18]: 'Name of the %(metavar)s to be loaded'
py3
样式格式可用于action2
help2="Directory of {} if it is not current directory".format(action2.metavar)
action2.help = help2
但是py2
样式必须用于action1
。除非你这么做
action1.help = "Name of the {} to be loaded".format(action1.metavar)
创建这两个操作后,您甚至可以使用:
action1.help = "Name of the {} to be loaded from {}".format(action1.metavar, action2.metavar)
但这只是普通的Python编码。我不这么认为。在“帮助”中使用“默认”参数有很多问题。这看起来很有希望。我会用我的东西检查一下。也谢谢你的add_论点。仍然在我的大脑中使用optpass。宾果。感谢您的帮助。遗憾的是,它不适用于默认的metavar
,根据--my option
计算:您必须明确地给出metavar=
。Python 3.6.5.注意s
的重要性在%(metavar)
之后,我在阅读文档时没有理解它。
action1.help = "Name of the {} to be loaded from {}".format(action1.metavar, action2.metavar)