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 参数的帮助程序列表的主要内容,如果未能解决你的问题,请参考以下文章

python sys.argv

Python3.x:sys.argv[]的简介

python3中sys.argv[]小记

[Python] sys.argv命令行参数传入

python之sys模块

python中的sys.argv有啥用?print sys.argv啥意思?