gpt4 book ai didi

Python 是否可以访问 argparse 选项的 metavar?

转载 作者:太空宇宙 更新时间:2023-11-03 15:13:12 33 4
gpt4 key购买 nike

我想知道是否有办法使用从其他地方获取的 argparse 元变量。例如,有一个 -f FILE 选项和一个 -d DIR 选项。我可以借助 -d 获取 file.metavar 或类似的东西吗?
也许:

 parser.add_argument("-f", "--file",
metavar = 'FILE',
action="store", dest="file_name", default="foo.bar",
help="Name of the {} to be loaded".format(metavar))
parser.add_argument("-d", "--dir",
metavar = 'DIR',
action = 'store', dest='file_dir', default=".",
help="Directory of {} if it is not current directory".format(option.file_name.metavar)

我知道这段代码是错误的(字符串没有元变量,并且在运行 parser.parse_args() 之前不会设置选项),但我还有几次想直接获取元变量而不用一堆:

 meta_file = 'FILE'
meta_dir = 'DIR'
meta_inquisition = 'SURPRISE'

四处漂浮。

谢谢。

编辑: s/add_option/add_argument/

最佳答案

argparse它是 add_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

help阅读:

usage: ipython [-h] [-f FILE] [-d DIR]

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"因为这是默认值(不过没什么大不了的)。

我更改了 help要使用的值 %(metavar)s .这用于合并各种 action属性。最常用于 default .

来自argparse docs :

The help strings can include various format specifiers to avoid repetition of things like the program name or the argument default. The available specifiers include the program name, %(prog)s and most keyword arguments to add_argument(), e.g. %(default)s, %(type)s, etc.:

我正在使用 action1.metavar放置FILEaction2 的帮助行中.这不是一个常见的用法,但我看不出有什么问题。

请注意 action1.metavar在设置解析器时使用一次(创建 action2 帮助行),然后在 help 时使用已格式化。

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 编码。

关于Python 是否可以访问 argparse 选项的 metavar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24069056/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com