有没有办法在命令行中向Python程序输入列表?

时间:2015-09-12 23:52:46

标签: python python-3.x

我想使用命令行将列表作为参数传递,例如:

$python example.py [1,2,3] [4,5,6]

我希望第一个列表[1,2,3]为first_list,[4,5,6]为second_list。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

import ast
import sys

for arg in sys.argv:
    try:
        print sum(ast.literal_eval(arg))
    except:
        pass

在命令行中:

   >>= python passListAsCommand.py "[1,2,3]"
    6

小心不要将任何恶意内容传递给literal_eval

答案 1 :(得分:1)

[可能是shell元字符。您可以将[]删除为@Reut Sharabani suggested

$ python example.py 1,2,3 4,5,6

很容易解析这种格式:

#!/usr/bin/env python3
import sys

def arg2int_list(arg):
    """Convert command-line argument into a list of integers.

    >>> arg2int_list("1,2,3")
    [1, 2, 3]
    """
    return list(map(int, arg.split(',')))

print(*map(arg2int_list, sys.argv[1:]))
# -> [1, 2, 3] [4, 5, 6]