Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70% Забронировать скидку
07 Июл 2023
2 мин
230

Передача списка как аргумента командной строки с помощью argparse

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

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

Предположим, есть следующий скрипт:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-l', '--list',
                      type=list, action='store',
                      dest='list',
                      help='Set flag',
                      required=True)
args = parser.parse_args()
print(args.list)

И он запускается с помощью команды:

python test.py -l "1 2 3 4"

В этом случае ожидается, что args.list будет списком ["1", "2", "3", "4"], однако на самом деле возвращается список ['1 2 3 4']. Это происходит потому, что argparse воспринимает аргумент -l как одну строку, а не список.

Чтобы решить эту проблему, можно воспользоваться аргументом nargs функции add_argument. nargs='+' говорит argparse, что ожидается один или более аргументов.

Вот так можно изменить код:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-l', '--list', nargs='+',
                      dest='list',
                      help='Set flag',
                      required=True)
args = parser.parse_args()
print(args.list)

Теперь, если запустить скрипт с теми же аргументами:

python test.py -l 1 2 3 4

то args.list будет возвращать список ['1', '2', '3', '4'], что и ожидалось изначально.

Таким образом, для передачи списка в качестве аргумента командной строки с помощью argparse, лучше всего использовать аргумент nargs='+' функции add_argument.

Добавить комментарий

Подарок
Забрать подарок