1

这可能是一个基本问题,但不幸的是我在搜索时什么也得不到。

我有一个函数用于*args在命令行上运行该函数时捕获参数。

基本结构如下:

def func(*args):
    <code starts>
    ...
    </code ends>

func("arg1", "arg2", "arg3")

这里的问题是,如果我在代码文件本身中传递参数,代码就可以工作,如上面的代码片段所示。我正在研究如何从命令行实际运行此代码,参数如下:

# python <file.py> arg1 arg2 arg3

为此,我知道我应该更改代码文件本身中的 'func("arg1", "arg2", "arg3")' 行,但我不确定它是怎么回事。

有人可以指出我该如何纠正这个问题。

非常感谢

注意:两种解决方案都有效,是的,两者都是相同的。很遗憾我不能同时接受这两个答案。

4

2 回答 2

7

sys.argv[1:]将为您提供所有命令行参数作为列表。

因此,您可以func(*sys.argv[1:])在代码中接收所有参数。但是,没有充分的理由使用可变参数 - 只需让函数接受一个列表argssys.argv[1:]直接传递。

于 2013-11-04T12:18:39.417 回答
6

调用函数时,您将使用类似的语法:

func(*sys.argv[1:])

这里列表*之前的sys.argv列表将列表扩展为单独的参数。

sys.argv列表本身包含在命令行中找到的所有参数,包括脚本名称;从第二个项目开始切片它会为您提供所有不带脚本名称的选项。

于 2013-11-04T12:19:00.410 回答