Передать список скрипту Python в качестве аргумента командной строки - PullRequest
1 голос
/ 11 марта 2019

В настоящее время я столкнулся с проблемой, в то время как я хочу поместить список в качестве аргумента. список в этом формате:

[1,0,0,0]

и я собираюсь сделать что-то подобное в другом коде Python:

os.system('python main.py %s' %([list]))

Когда я печатал sys.argv [1] в main.py, это было не то, что я хотел: он печатал

[1, * 1 010 *

Как я могу использовать этот список в main.py?

1 Ответ

0 голосов
/ 11 марта 2019

Проблема, с которой вы сталкиваетесь, заключается в том, что когда вы передаете список в качестве аргумента командной строки без кавычек, питон читает каждое значение, разделенное запятыми, как один аргумент.Просто оберните кавычки вокруг строки, как показано ниже

main.py file:

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

Передача спискаили в качестве переменной:

>>> 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

Надеюсь, это поможет

...