2010-10-27 70 views
178

我使用python来创建我的项目设置设置,但我需要帮助获取命令行参数。如何访问Python中的命令行参数?

我想这在终端上:

$python myfile.py var1 var2 var3 

在我的Python文件,我想用所输入的所有变量。

+0

面包师傅模块是一个伟大的工具编写Python命令行应用程序。 http://pypi.python.org/pypi/Baker/1.02 – 2010-10-27 20:02:40

回答

235

Python tutorial explains it

import sys 

print(sys.argv) 

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

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

坦克,但现在我需要把我的var1使用?这里发生了什么.. :) – ParisNakitaKejser 2010-10-27 13:46:31

+34

Dooh,明白了(sys.argv [1]):D – ParisNakitaKejser 2010-10-27 13:50:20

68
import sys 

sys.argv[1:] 

会给你的参数(不包括Python文件的名称)

列表
16

您可以使用sys.argv将参数作为名单。

如果您需要访问单个元素,你可以使用

sys.argv[i] 

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

21

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 
3

如果你这样称呼它:$ python myfile.py var1 var2 var3

import sys 

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

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

1

我能想到的一些额外的东西。

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

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

19

我强烈建议argparse这与Python 2.7和随后赶到。

这里一个小例子:

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