gpt4 book ai didi

python - 使用 argparse 有规则吗?

转载 作者:行者123 更新时间:2023-11-30 22:56:52 25 4
gpt4 key购买 nike

当使用argparse时,我如何决定某个东西应该是位置参数、可选参数还是子命令?

最佳答案

位置参数通常是必需的。例如,如果您的程序始终需要传递一个文件来读取,则该文件将是一个位置参数。

毫无疑问,可选参数是可选。这可能是一个可以具有合理默认值的参数(即您的程序默认在端口 8080 上运行,但可以接受其他端口),或者它可能是一个打开可选行为的标志(即 verbose 标志)。

当您想要向单个脚本添加一整套不同的命令时,通常会使用子解析器。也许您的脚本可以读取或写入文件,并且 readwrite操作需要不重叠的各种标志。在这种情况下,为 read 提供一个子解析器是有意义的。 write 的操作和子解析器操作来简化这些标志的解析。

大多数简单的程序都希望坚持使用位置参数和可选参数:您通常会知道何时真正需要使用子解析器。

这是一个(非常人为的)示例程序,它使用了所有三个:

import argparse

def parse_args():
p = argparse.ArgumentParser()
p.add_argument("filename", help="Filename to interact with")
p.add_argument("-v", "--verbose", action="store_true", help="Turn on verbose mode")

subparsers = p.add_subparsers(title="Commands", dest="command")

read_p = subparsers.add_parser("read", help="read from FILENAME")

load_p = subparsers.add_parser("load", help="load from FILENAME")
return p.parse_args()

if __name__ == "__main__":
args = parse_args()

这是它的帮助文本:

usage: foo.py [-h] [-v] filename {read,load} ...

positional arguments:
filename Filename to interact with

optional arguments:
-h, --help show this help message and exit
-v, --verbose Turn on verbose mode

Commands:
{read,load}
read read from FILENAME
load load from FILENAME

关于python - 使用 argparse 有规则吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36904026/

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