怎么使用Click来分析字符串中的参数?

原学程将引见若何应用Click去剖析字符串中的参数?的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

怎么使用Click来分析字符串中的参数? 教程 第1张

成绩描写

假定我有1个包括参数以及选项的字符串列表,应用argparse,我不妨应用parse_args函数将该列表剖析为1个对于象,以下所示:

import argparse

extra_params = [‘—sum’, ‘七’, ‘⑴’, ‘四二’]

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去剖析供给的可迭代字符串?

我曾经搜刮了click的API文档,仿佛在*Co妹妹and类散中有1个parse_args函数,但是在文档中出有瞅就任何干于怎样做到这1面的实质。我已测验考试虚例化BaseCo妹妹and以及Co妹妹and,但是没有肯定怎样在出有准确高低文的情形下使parse_args任务。

从更普遍的配景去瞅,这个成绩是由于建立了1个开动器运用法式,终究用户将其用作开动本身的运用法式的支架。在这里,Launcher应用了很多参数,而Click润饰符对于这些参数异常有用。未知参数不妨依照文档here中所示停止处置。而后,该开动器挪用应用这些未剖析的参数供给的Callable终端用户。单打将未剖析的参数保存为字符串元组。在这类情形下,终端用户怎样可以或许应用Click去剖析他们感兴致的参数?以下是解释该成绩的1段代码:

import click
from typing import Tuple

@click.co妹妹and(name="TestLauncher", context_settings={
  "ignore_unknown_options": True
})
@click.option('--uri', '-u',
  help="URI for the server")
@click.argument('unprocessed_args', nargs=⑴,
  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()

服从令交运言此敕令:

python三 so_test.py --uri test.com --prog-arg 一0
Was passed a URI of test.com
Additional args are ('--prog-arg', '一0')

推举谜底

检查正文以及随后的编纂,使我以为只需对于子函数运用单打润饰符能够会见效。切实其实,瞅起去是如许,但是我没有完整晓得为何。

import click
from typing import Tuple

@click.co妹妹and(name="TestLauncher", context_settings={
  "ignore_unknown_options": True
})
@click.option('--uri', '-u',
  help="URI for the server")
@click.argument('unprocessed_args', nargs=⑴,
  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)

@click.co妹妹and()
@click.option('--prog-arg')
def child_function(prog_arg: str) -> None:
 # How do I get Click to parse the provided args for me?
 print(f"Child function passed: {prog_arg}")

if __name__ == "__main__":
 # pylint: disable=no-value-for-parameter, unexpected-keyword-arg
 main()
python三 so_test.py --uri test.com --prog-arg 一0
Was passed a URI of test.com
Additional args are ('--prog-arg', '一0')
Child function passed: 一0

佳了闭于怎样应用Click去剖析字符串中的参数?的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。