gpt4 book ai didi

python-2.7 - python : argparse throwing value error when combining positional and optional argument

转载 作者:行者123 更新时间:2023-12-04 02:21:00 33 4
gpt4 key购买 nike

我正在尝试使用 python 中的 argparse 库来读取可选参数和必需参数。到目前为止,我正在这样做:

import argparse
parser = argparse.ArgumentParser(description='Cleanup Script for Folder')

parser.add_argument('PATH_TO_WORKDIR_ROOT', type=str, dest='PATH_TO_WORKDIR_ROOT', action='store', help='(absolute or) relative path to directory \n to work on, e.g. "..\MyFolder\\"')
parser.add_argument('--PATH_TO_BACKUP_ROOT', type=str, dest='PATH_TO_BACKUP_ROOT', action='store', help='(absolute or) relative path to Backup-Directory \n default is ".\BACKUP\"')

args = parser.parse_args()

现在我正在测试我的代码,它给了我一个我不明白的值错误:
$ python argparsetest.py --help
Traceback (most recent call last):
File "argparsetest.py", line 5, in <module>
parser.add_argument('PATH_TO_WORKDIR_ROOT', type=str, dest='PATH_TO_WORKDIR_ ROOT', action='store', help='(absolute or)
relative path to directory \n to wo rk on, e.g. "..\MyFolder\\"')
File "C:\Program
Files\Enthought\Canopy\App\appdata\canopy-1.3.0.1715.win-x86_
64\lib\argparse.py", line 1262, in add_argument
raise ValueError('dest supplied twice for positional argument') ValueError: dest supplied twice for positional argument

只有一个位置参数,不是,目的地不同。我真的不明白麻烦:)

非常感谢!

最佳答案

查看中的以下代码argparse.py :

# =======================
# Adding argument actions
# =======================
def add_argument(self, *args, **kwargs):
"""
add_argument(dest, ..., name=value, ...)
add_argument(option_string, option_string, ..., name=value, ...)
"""

# if no positional args are supplied or only one is supplied and
# it doesn't look like an option string, parse a positional
# argument
chars = self.prefix_chars
if not args or len(args) == 1 and args[0][0] not in chars:
if args and 'dest' in kwargs:
raise ValueError('dest supplied twice for positional argument')
kwargs = self._get_positional_kwargs(*args, **kwargs)

由于您没有先于 --到 PATH_TO_WORKDIR_ROOT 它认为第一个参数是 dest因此,当您提供 dest 时会引发错误再次作为命名参数。

关于python-2.7 - python : argparse throwing value error when combining positional and optional argument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41446760/

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