python从命令行给出一个列表作为函数的输入

时间:2017-01-28 15:34:08

标签: python

我是python的新手,基本上尝试发送一个list参数并使用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 个答案:

答案 0 :(得分: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)  

输出

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

答案 1 :(得分: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