Как разобрать все значения параметра командной строки в python?

Привет.
Пишу скрипт, который запускается сторонним приложением с уже заданными в определённом формате параметрами.

Пример скрипта, с использованием библиотеки argparse:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import argparse

def create_parser ():
    parser = argparse.ArgumentParser()
    parser.add_argument('--allow_ips', nargs='*')

    return parser

if __name__ == '__main__':
    parser = create_parser()
    namespace = parser.parse_args()

    print (namespace)


Примеры вызова скрипта:
python ./script.py --allow_ips=
python ./script.py --allow_ips=192.160.0.10
python ./script.py --allow_ips=192.160.0.10 192.160.0.11 192.160.0.12

Т.е. количество значений параметра allow_ips может быть 0 и больше.
Первые два вызова выполняются корректно, третий вызов выбрасывает исключение:

error: unrecognized arguments: 192.160.0.11 192.160.0.12

Если вместо символа "=" использовать пробел, то все параметры передаются верно, но стороннее приложение передаёт параметры именно в таком формате.
Как можно указать для библиотеки использовать нужный разделитель при таком вызове?
  • Вопрос задан
  • 106 просмотров
Решения вопроса 1
@YuriM1983
Фрилансер - веб-программист на питоне
Конвенцию UNIX по параметрам это нарушает, так что пользуйся хаками:
import sys
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--allow_ips', nargs='*')
namespace = parser.parse_args([y for x in sys.argv for y in x.split('=')])
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
InterVi
@InterVi
говнокодер
Про разделитель не знаю, попробуй использовать parse_known_args.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Popmechanic Москва
от 100 000 до 150 000 руб.
Panda Media Нижний Новгород
от 70 000 руб.
НЛ Континент Новосибирск
от 60 000 до 100 000 руб.
18 авг. 2018, в 01:10
17000 руб./за проект
17 авг. 2018, в 23:00
5500 руб./за проект