在终端

时间:2017-02-01 19:42:35

标签: python command-line terminal argv

我使用argv在终端中传递python脚本的唯一参数。在多个唯一文件上运行相同程序时非常有用(此程序解析某些事物的xml文件)。我已经构建了三个不同的程序,用于独特的目的。

我正在将我的程序聚合到一个.py文件中,这样我就可以在python的实际运行实例中使用'import',然后逐个浏览文件:

>>>import xml
>>>xml.a()
>>>xml.b()
>>>xml.c()

如何动态地将参数传递给这些程序?我以这种方式调用程序后放置参数时出现语法错误。

>>>xml.a() file1.xml file1.csv
           ^
>>>SyntaxError: invalid syntax

1 个答案:

答案 0 :(得分:2)

通过将参数放在括号中来将参数传递给Python中的函数(这些参数称为"参数," see documentation)。因此,您需要修改函数,以便它们可以接受参数(而不是从sys.argv读取),然后运行如下函数:

<强> my_library.py

def function1(filename):
    print filename

<强>解释

>>> import my_library
>>> my_library.function1("file1.xml")
>>> file1.xml

如果您希望您的函数能够处理无限数量的参数(就像使用sys.argv一样),您可以使用参数列表末尾的*语法来捕获剩余的参数参数作为列表(see documentation)。例如:

<强> my_library.py

def function1(*filenames):
    for filename in filenames:
        print filename

<强>解释

>>> import my_library
>>> my_library.function1("file1.xml", "file2.csv", "file3.xml")
file1.xml
file2.csv
file3.xml