Передать список скрипту Python в качестве аргумента командной строки

1

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

[1,0,0,0]

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

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

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

[1,

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

  • 0
    Я думаю, вы должны проверить решение здесь - stackoverflow.com/questions/32761999/…
Показать ещё 4 комментария
Теги:
command-line-arguments

1 ответ

0
Лучший ответ

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

файл 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

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

  • 0
    '%s' не будет работать в Windows.
  • 0
    @ivan_pozdeev спасибо за подвох, я не знаю точно, в чем проблема, но попробуйте использовать формат (). Для получения дополнительной информации см. Мой текст выше

Ещё вопросы

Сообщество Overcoder
Наверх
Меню