gpt4 book ai didi

python - 如何使用 click 来解析参数的字符串?

转载 作者:行者123 更新时间:2023-12-03 20:53:37 25 4
gpt4 key购买 nike

假设我有一个包含参数和选项的字符串列表,其中 argparse ,我可以使用 parse_args 解析这个列表函数到一个对象中,如下:

import argparse

extra_params = [‘—sum’, ‘7’, ‘-1’, ‘42’]

parser=argparse.ArgumentParser(description=“argparse docs example”)
parser.add_argument(‘integers’, metavar=‘N’, type=int, nargs=‘+’,
help=‘an integer for the accumulator’)
parser.add_argument(‘—sum’, dest=‘accumulate’, action=‘store_const’,
const=sum, default=max,
help=‘sum the integers (default: find the max)’)
parsed_object=parser.parse_args(extra_params)

在这里, argparse已经解析了一个提供的可迭代字符串。可以用吗 click还要解析提供的可迭代字符串?

我在 API 文档中搜索了 click似乎有一个 parse_args *Command 内的函数一组类,但在文档中没有看到关于我如何做到这一点的任何内容。我试过实例化 BaseCommand以及 Command但不确定如何获得 parse_args在没有正确上下文的情况下工作。

对于更广泛的上下文,这个问题是由于构建了一个启动器应用程序,最终用户将其用作启动他们自己的应用程序的脚手架。在这里,启动器使用了许多参数,点击装饰器可以完美地使用这些参数。可以按照文档 here 中所示处理未知参数。 .然后,该启动器使用这些未解析的参数调用提供可调用的最终用户。 Click 将未解析的参数作为字符串元组。在这种情况下,最终用户如何能够使用 Click 来解析他们感兴趣的参数?这里有一个片段来说明这个问题:
import click
from typing import Tuple

@click.command(name="TestLauncher", context_settings={
"ignore_unknown_options": True
})
@click.option('--uri', '-u',
help="URI for the server")
@click.argument('unprocessed_args', nargs=-1,
type=click.UNPROCESSED)
def main(uri: str, unprocessed_args: Tuple[str, ...]) -> None:
print(f"Was passed a URI of {uri}")
print(f"Additional args are {unprocessed_args}")

child_function(unprocessed_args)

def child_function(unprocessed_args: Tuple[str, ...]) -> None:
# How do I get Click to parse the provided args for me?
pass

if __name__ == "__main__":
# pylint: disable=no-value-for-parameter, unexpected-keyword-arg
main()

从命令行运行:
python3 so_test.py --uri test.com --prog-arg 10
Was passed a URI of test.com
Additional args are ('--prog-arg', '10')

最佳答案

尝试这样的事情:

import click

@click.command()
@click.option('--count', default=1, help='number of greetings')
@click.option('--test', default='test_was_not_provided', help='test option')
@click.argument('name')
def hello(*args, **kwargs):
click.echo(f"Hello World! {kwargs['name']} {kwargs['count']}")


if __name__ == '__main__':
hello()

运行类似: python main.py haha --test this_is_a_test --count=40

关于python - 如何使用 click 来解析参数的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61846284/

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