如何访问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