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

2024-04-26 02:43:30 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我希望第一个列表[1,2,3]是第一个\u列表,[4,5,6]是第二个\u列表。我该怎么做?你知道吗


Tags: 命令行py列表参数example
3条回答

[可能是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]
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。你知道吗

import sys
def command_list():
    l = []
    if len(sys.argv) > 1:
        for i in sys.argv[1:]:
            l.append(i)
    return l
print(command_list())

在命令行中

$ python3 test105.py 1,2,3 4,5,6
['1,2,3', '4,5,6']

相关问题 更多 >