如何访问Python中的命令行参数?

我使用python来创build我的项目设置设置,但我需要帮助获取命令行参数。

我在terminal上试了这个:

$python myfile.py var1 var2 var3 

在我的Python文件中,我想使用input的所有variables。

Python教程解释它 :

 import sys print(sys.argv) 

更具体地说,如果你运行python example.py one two three

 >>> import sys >>> print(sys.argv) ['example.py', 'one', 'two', 'three'] 
 import sys sys.argv[1:] 

会给你一个参数列表(不包括python文件的名字)

你可以使用sys.argv来获取列表的参数。

如果您需要访问个别元素,则可以使用

 sys.argv[i] 

其中i是索引, 0会给你正在执行的python文件名。 之后的任何索引都是通过的参数。

Python代码:

 import sys # main param_1= sys.argv[1] param_2= sys.argv[2] param_3= sys.argv[3] print 'Params=', param_1, param_2, param_3 

调用:

 $python myfile.py var1 var2 var3 

输出:

 Params= var1 var2 var3 

我强烈推荐使用Python 2.7或更高版本来使用argparse 。 这里有个小例子:

 import argparse parser = argparse.ArgumentParser("simple_example") parser.add_argument("counter", help="An integer will be increased by 1 and printed.", type=int) args = parser.parse_args() print(args.counter + 1) 

python3 prog.py -h的输出

 usage: simple_example [-h] counter positional arguments: counter counter will be increased by 1 and printed. optional arguments: -h, --help show this help message and exit 

python3 prog.py 1如你所料:

 2 

如果你这样调用它: $ python myfile.py var1 var2 var3

 import sys var1 = sys.argv[1] var2 = sys.argv[2] var3 = sys.argv[3] 

与数组类似,您也有sys.argv[0] ,它始终是当前的工作目录。

一些额外的东西,我可以想到的。

作为@allsyed说sys.argv给出了组件列表(包括程序名),所以如果你想知道通过命令行传递的元素的数量,你可以使用len()来确定它。 基于此,如果用户未传递特定数量的参数,则可以deviseexception/错误消息。

此外,如果你正在寻找一个更好的方式来处理命令行参数,我build议你看看https://docs.python.org/2/howto/argparse.html