В настоящее время я сталкиваюсь с проблемой, в то время как я хочу поместить список в качестве аргумента. список в этом формате:
[1,0,0,0]
и я собираюсь сделать что-то подобное в другом коде Python:
os.system('python main.py %s' %([list]))
Когда я напечатал sys.argv [1] в main.py, это было не то, что я хотел:
[1,
Как я могу использовать этот список в main.py
?
Проблема, с которой вы сталкиваетесь, заключается в том, что когда вы передаете список в качестве аргумента командной строки без кавычек, питон читает каждое значение, разделенное запятыми, как один аргумент. Просто оберните кавычки вокруг строки, как показано ниже
файл main.py:
import sys
import ast
print sys.argv[1]
print type(ast.literal_eval(sys.argv[1]))
передавая не строку в качестве аргумента:
>>> import os
>>> os.system("python main.py '%s'"%[1,2])
[1, 2]
<type 'list'>
0
Передав список или dict как переменную:
>>> a = [1,2]
>>> os.system("python main.py '%s'"%a)
[1, 2]
<type 'list'>
0
>>> dic = {1:2,2:3}
>>> os.system("python main.py '%s'"%dic)
{1: 2, 2: 3}
<type 'dict'>
0
РЕДАКТИРОВАТЬ:
Альтернативное решение: использование формата строки
>>>a = [1,2]
>>> os.system("python main.py '{}'".format(a))
[1, 2]
<type 'list'>
0
Надеюсь это поможет
'%s'
не будет работать в Windows.