python- sys.argv CLI 参数的帮助程序列表
Posted
技术标签:
【中文标题】python- sys.argv CLI 参数的帮助程序列表【英文标题】:python- helper list for sys.argv CLI argument 【发布时间】:2019-05-21 22:51:11 【问题描述】:我必须为我的 python 脚本读取 CLI 参数,然后将用户输入的参数传递给方法。我想为用户提供她可以输入的有效参数列表,例如当您运行带有无效参数或未传递参数的脚本时 - 它表明您只能输入这些参数。
我知道我们可以使用 argparse 模块来实现这一点,但在我的情况下 argparse 将是一个过度杀伤 - 因为我只想将用户提供的任何(有效)参数传递给方法。我应该如何做到这一点?
parser.add_argument('--system-status', '-st', metavar='<host>', type=str)
if args.system-status:
method(args.system-status)
对于其他 5 个变量重复相同的内容?
【问题讨论】:
argparse 不是一个繁重的工具,只需 2 行即可设置 1 个参数,并且作为标准库的一部分,因此没有依赖关系。听起来一点也不夸张 @Andrei,我有 6 个参数,所以每个参数需要 6 行,然后再将该参数传递给方法,每个参数的 if 条件?例如-如果我有一个名为“myvaribale1”的变量,我需要做 if args.myvariable: method(args.myvariable) 和其他 5 个变量的相同内容。好像有很多重复 为什么要重新发明***?使用 argparse,特别是如果您不知道如何实现它。并添加您到目前为止所拥有的内容,或者您正在谈论的参数类型。我们现在没什么可做的了。 Minimal, Complete, and Verifiable example @ThePjot 添加了一个示例。 无论如何您都需要进行 6 次检查,否则您还希望如何进行检查? :) Argparse 的好处是使“无效参数”和“可能的参数”帮助程序更容易。 【参考方案1】:argparse 库是要走的路,如果你不想检查每个参数,你可以使用这样的东西:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo')
parser.add_argument('--bar')
parser.add_argument('--baz')
args = parser.parse_args()
def f(foo=None, bar=None, baz=None, **kwargs):
print(foo)
print(bar)
print(baz)
f(**args.__dict__)
**args.__dict__
会将字典中的 args 变成 kwargs。
如果你真的不想使用 argparse,那么 sys.argv 会给你传递给函数的参数列表。
【讨论】:
以上是关于python- sys.argv CLI 参数的帮助程序列表的主要内容,如果未能解决你的问题,请参考以下文章