如何通过命令行将数组传递给python

时间:2016-04-28 21:48:01

标签: python python-3.x

我正在尝试将数组传递给python

import sys
arr = sys.argv[1]
print(arr[2])

我的命令是

python3 test.py [1,2,3,4,5] 0

我希望结果呢

2

然而,它是

,

2 个答案:

答案 0 :(得分:18)

argv的元素是字符串,它们不像程序中的文字那样被解析。

你应该只传递逗号分隔的字符串(不带括号):

python3 test.py 1,2,3,4,5 0

然后使用split()将其转换为数组。

import sys
arr = sys.argv[1].split(',')
print(arr[2])

答案 1 :(得分:6)

命令行参数是字符串。甚至整数也必须从字符串转换为int。如果您使用示例中显示的列表语法,则需要通过某种解析器(您自己的解析器,来自asteval)运行参数 - 但不要使用eval)。但是有一种更简单的方法:只需单独编写参数,并使用sys.argv切片作为列表。以空格分隔的参数是将多个参数传递给命令行程序的标准方法(例如,多个文件名为lessrm等。)

python3 test.py -n a b c 1 2 3

首先,您要识别并跳过具有不同目的的参数(在上例中为-n),然后简单地保留其余部分:

arr = sys.argv[2:]
print(arr[3])   # Prints "1"

PS。您还需要通过引用具有特殊含义的任何字符(*;,作为参数一部分的空格等来保护shell中的任何参数。但这是一个单独的问题。