@denislysenko
data engineer

Как экранировать элемент в командной строке (модуль argpars)?

Всем привет!
Нужно написать утилиту командной строки для сортировки фильмов.
Есть аргумент -genres - это фильтр по жанрам, задаваемый пользователем. может быть множественным. например, Comedy|Adventure или Comedy&Adventure. опциональный

То есть в консоли можно ввести:
python3 example_one.py -genres Comedy # и эта команда работает в консоли

Но нужно уметь фильтровать сразу по нескольким жанрам, например,
python3 example_one.py -genres Romantic|Drama # эта команда не работает в консоли
python3 example_one.py -genres Romantic&Drama # эта команда тоже не работает

вот что пишется в консоли при выполнении этих команд двух команд:

zsh: command not found: Drama
Exception ignored in: <_io.TextIOWrapper name='' mode='w' encoding='utf-8'>
BrokenPipeError: [Errno 32] Broken pipe

вот как выглядит метод add_argument:
parser.add_argument('-genres',
                    type=str,
                    help='filter by genre'
                    )


Как сделать так, чтобы можно было в консоли передавать этому аргументу несколько значений через | или &
Например, если я в консоли пишу:
python3 example_one.py -genres Romantic|Drama
!!! То мне нужно, чтобы значение аргумента -genres было "Romantic|Drama" , а дальше с этой строкой уже будет работать другая функция.
Заранее спасибо
  • Вопрос задан
  • 76 просмотров
Решения вопроса 2
Vindicar
@Vindicar
RTFM!
Может, проще будет так?
example.py -genres Romantic -genres Drama

argparse такое умеет.
Ответ написан
Комментировать
netpastor
@netpastor
Python developer
Не используй спец символы для баша
https://sonikelf.ru/15-specialnyx-simvolov-komand-...
Попробуй к примеру заменить их на запятую
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы