gpt4 book ai didi

python - 使用带有多个参数的 fromfile_prefix_chars (nargs ="*")

转载 作者:行者123 更新时间:2023-11-28 17:37:20 29 4
gpt4 key购买 nike

我想在 python argparse 中使用文件参数,文件中的行如下所示:

--contour_levels=-4 -2 0 2 4

或:

--contour_levels -4 -2 0 2 4

有没有简单的方法来做到这一点?我知道我可以使用第一个,然后每行列出一个其他级别,但这看起来很荒谬。

谢谢!

最佳答案

来自文档:

https://docs.python.org/3/library/argparse.html#argparse.ArgumentParser.convert_arg_line_to_args

def convert_arg_line_to_args(self, arg_line):
for arg in arg_line.split():
if not arg.strip():
continue
yield arg

这个函数取代了解析器用来从你的文件中读取行的函数。您可以将 ArgumentParser 子类化并添加此函数。或者你可以通过用这个函数替换解析器的绑定(bind)方法来“拼凑”它(没有 self - 见评论)。

parser = argparse.ArgumentParser(...)
parser.convert_arg_line_to_args = convert_arg_line_to_args

这个想法是从你的文件中取出一行,然后一个一个地返回(作为生成器)字符串。如果这不能正常工作,调整起来应该不难。

附注每行返回一个字符串的默认版本是

def convert_arg_line_to_args(self, arg_line):
return [arg_line]

如果您对它的使用方式有更多疑问,请查看 ArgumentParser._read_args_from_files 的代码。该函数从 sys.argv[1:] 获取字符串列表,并返回一个添加了您的文件内容的新列表。

关于python - 使用带有多个参数的 fromfile_prefix_chars (nargs ="*"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29111801/

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