gpt4 book ai didi

python - 可以告诉 python 2.7 中的 argparse 至少需要两个参数吗?

转载 作者:太空狗 更新时间:2023-10-30 00:21:10 25 4
gpt4 key购买 nike

我的应用程序是一个专门的文件比较实用程序,显然只比较一个文件没有意义,所以 nargs='+' 不太合适。

nargs=N 仅排除最多 N 个参数,但我需要接受无限数量的参数,只要至少有两个。

最佳答案

简短的回答是你不能这样做,因为 nargs 不支持像“2+”这样的东西。

长的答案是你可以使用这样的方法来解决这个问题:

parser = argparse.ArgumentParser(usage='%(prog)s [-h] file file [file ...]')
parser.add_argument('file1', nargs=1, metavar='file')
parser.add_argument('file2', nargs='+', metavar='file', help=argparse.SUPPRESS)
namespace = parser.parse_args()
namespace.file = namespace.file1 + namespace.file2

你需要的技巧是:

  • 使用usage 向解析器提供您自己的用法字符串
  • 使用 metavar 在帮助字符串中显示具有不同名称的参数
  • 使用SUPPRESS 避免显示其中一个变量的帮助
  • 合并两个不同的变量,只需向解析器返回的 Namespace 对象添加一个新属性

上面的示例生成以下帮助字符串:

usage: test.py [-h] file file [file ...]

positional arguments:
file

optional arguments:
-h, --help show this help message and exit

当传递的参数少于两个时仍然会失败:

$ python test.py arg
usage: test.py [-h] file file [file ...]
test.py: error: too few arguments

关于python - 可以告诉 python 2.7 中的 argparse 至少需要两个参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8411218/

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