2014-02-06 38 views
0

如何讀取命令行參數(sys.argv)中動態命名的元組?如何讀取在命令行參數(sys.argv)中動態命名的元組?

下面的例子不起作用。

#!/usr/bin/env python 
import sys 
cmd1 = sys.argv[1] 
tpl1 = ('one', 'two', 'three') 
tpl2 = ('four', 'five', 'six') 
print (cmd1) 
val1 = cmd1[0] 
val2 = cmd1[1] 
val3 = cmd1[2] 
print (val1) 
print (val2) 
print (val3) 

電流輸出script.py TPL1

t 
p 
l 

所需的輸出爲script.py TPL1

one 
two 
three 

請指教,謝謝

+0

如果這樣做'script.py tpl1',然後'CMD1 = sys.argv中[1] == 「TPL1」',這樣'CMD1 [0]'相同做' 「TPL1」 [0]'是''t「'。這如何令人驚訝? –

+0

是的,我知道。問題是我將如何解決這個問題? – user3281086

回答

3

使用一本字典,acces使用字符串唱變量幾乎不是一個好主意。

d = { 
     'tpl1': ('one', 'two', 'three'), 
     'tpl2': ('four', 'five', 'six') 
    } 

cmd1 = sys.argv[1] 
print (d[cmd1]) 
+0

如果我使用這個如何將元組的值分配給特定的變量?即命令行參數=元組的名稱,但val1 =從元組的第一個值... val2 =元組的第二個值 – user3281086

+0

答案:val1 =(d [cmd1])[0] – user3281086

+0

@ user3281086尋找一個通用的答案這個問題可能會導致你「exec」或「eval」。 [看看他們做什麼以及爲什麼處理用戶輸入如代碼危險的解釋](http://stackoverflow.com/questions/1832940/is-using-eval-in-python-a-bad-practice )只是先發制人 – colinro