gpt4 book ai didi

python - 未提供位置参数时打印帮助

转载 作者:太空宇宙 更新时间:2023-11-04 05:16:02 25 4
gpt4 key购买 nike

我正在尝试执行我的 Python 程序。它使用一个位置参数。当未提供位置参数时,我想打印帮助。但我得到的只是

error : too few arguments

这是 Python 代码:

parser = argparse.ArgumentParser(
description = '''My Script ''')
parser.add_argument('I', type=str, help='Provide the release log file')
args = parser.parse_args()

当没有指定位置参数时,我期待以下输出:

usage: script.py [-h] I

My Script

positional arguments:
I Provide the release log file

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

如有任何想法,我们将不胜感激。

最佳答案

argparse 不是那样工作的。您需要寻求有关 -h 参数的帮助。否则,它只会给出 用法 以及错误消息。

0015:~/mypy$ python3 stack41671660.py 
usage: stack41671660.py [-h] I
stack41671660.py: error: the following arguments are required: I
0015:~/mypy$ python stack41671660.py
usage: stack41671660.py [-h] I
stack41671660.py: error: too few arguments
0015:~/mypy$ python stack41671660.py -h
usage: stack41671660.py [-h] I

My Script

positional arguments:
I Provide the release log file

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

您可以使用 nargs='?' 使位置参数成为“可选”,并为默认值添加一个测试:

print(args)
if args.I is None:
parser.print_help()

样本运行:

0016:~/mypy$ python stack41671660.py 
Namespace(I=None)
usage: stack41671660.py [-h] [I]

My Script

positional arguments:
I Provide the release log file

optional arguments:
-h, --help show this help message and exit
0019:~/mypy$ python stack41671660.py 2323
Namespace(I='2323')

另一种选择是自定义parser.error 方法,使其执行print_help 而不是print_usage。这将影响所有解析错误,而不仅仅是这个缺失的位置。

def error(self, message):
"""error(message: string)

Prints a usage message incorporating the message to stderr and
exits.

If you override this in a subclass, it should not return -- it
should either exit or raise an exception.
"""
# self.print_usage(_sys.stderr)
self.print_help(_sys.stderr)
args = {'prog': self.prog, 'message': message}
self.exit(2, _('%(prog)s: error: %(message)s\n') % args)

`

关于python - 未提供位置参数时打印帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41671660/

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