2010-10-27 95 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