2017-01-28 48 views
0

我很新的蟒蛇,基本上試圖發送一個列表參數,並使用python蟒蛇給一個列表作爲輸入到命令行功能

import unittest 
import sys 

class TestStringMethods(): 
    def test_upper(self, input_list): 

     print input_list 

    if __name__ == '__main__': 
     input_list = sys.argv[1] 
     test_upper(input_list) 

打印我應該如何給該命令的輸入線?我想這

python test.py 1,2,3 
python test.py test_upper: input_list=[1,2,3] 
    python test.py TestStringMethods.test_upper: input_list=[1,2,3] 

毫無效果

+2

爲什麼不'input_list = sys.argv [1:]',然後'python test.py 1 2 3'? – jonrsharpe

+0

檢查我的更新答案 – jophab

回答

0

這應該工作!

if __name__ == '__main__': 
    string_input = sys.argv[1] 
    input_list = string_input.split(",") #splits the input string on spaces and comma 
    # process string elements in the list and make them integers 
    input_list = [int(a) for a in input_list]   
    test_upper(input_list) 

只是爲了測試這個想法是否有效。

在閒置或您正在使用的任何IDE中運行以下代碼。我假設你正在使用python 2.7

string_input = "1, 2, 3" 
input_list = string_input.split(",") #splits the input string on spaces and comma 
# process string elements in the list and make them integers 
input_list = [int(a) for a in input_list] 
print input_list 
+0

我想和得到這個「蟒蛇test.py了1,2,3 回溯(最近通話最後一個): 文件 「test.py」,4號線,在 類TestStringMethods(): 在TestStringMethods中,第18行的文件「test.py」在TestStringMethods中爲第18行。test_upper(input_list) TypeError:test_upper()只需要2個參數(給出1)「 – user3920295

+0

我不知道你對test_upper函數做了什麼。你把它作爲一個函數,所以我認爲你寫的是正確的。 這個問題的實際解決方案超出了這個問題的範圍。 – Ehsan

1

jonrsharpe已經在註釋中指定了這個方法。

這將是實現你想要的最簡單的方法。

你可以給輸入數字分隔空格作爲命令行參數。 這可避免使用split功能

代碼

import sys 
input_list = sys.argv[1:] 
print (input_list) 

輸出

python3 script.py 1 2 3 4 5 
['1', '2', '3', '4', '5'] 

修改代碼

import unittest 
import sys 
class TestStringMethods: 
    def __init__(self): 
     pass 

    def test_upper(self, input_list): 

     print (input_list) 


input_list = sys.argv[1:] 
c=TestStringMethods() 
c.test_upper(input_list) 

輸出

的3210
python3 script.py 1 2 3 4 5 
['1', '2', '3', '4', '5']