我想傳遞一個列表作爲使用命令行的參數,例如:有沒有辦法在命令行中輸入一個Python程序列表?
$python example.py [1,2,3] [4,5,6]
我想要的第一列表[1,2,3]是first_list和[4,5,6]成爲second_list。我怎樣才能做到這一點?
我想傳遞一個列表作爲使用命令行的參數,例如:有沒有辦法在命令行中輸入一個Python程序列表?
$python example.py [1,2,3] [4,5,6]
我想要的第一列表[1,2,3]是first_list和[4,5,6]成爲second_list。我怎樣才能做到這一點?
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']
我不認爲這是OP所要做的,''1,2,3''仍然是一個字符串(而不是一個列表) –
[
可能是一個殼元字符。您可以刪除[]
爲@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]
要麼使用字符串格式,或者使用某種形式的'eval'(極度危險 - 這是用戶輸入! )。所以 - 使用一個列表的字符串格式('example.py 1,2,3 3,4,5')。 –
@ReutSharabani我不能這樣做,程序將按照我的問題進行測試。 – Julia
你可以使用'ast.literal_eval'。 'eval'對於只有你會運行的測試程序來說可能是很好的。 –