Принимать списки переменной длины в качестве позиционных аргументов (argparse)? - PullRequest
0 голосов
/ 05 ноября 2018

Как я могу иметь два позиционных аргумента, передаваемых программе через командную строку, где каждый аргумент является списком файлов переменной длины? В настоящее время я использую argparse для получения аргументов.

Я понимаю, что у вас может быть что-то похожее с необязательными именованными аргументами, но вы можете сделать это с позиционными аргументами, где нет метки (--arg), чтобы определить, где один аргумент заканчивается, а другой начинается?

Разные файлы будут иметь разные расширения, если это поможет.

1 Ответ

0 голосов
/ 05 ноября 2018

Если каждая группа файлов имеет собственное расширение файла, то аргументы уже определены. Вы можете просто заставить анализатор аргументов поместить аргументы в один длинный список и разделить их позже.

parser.add_argument('filenames', nargs='*')


def getByExtension(lst, ext):
  return [f for f in lst if f.endswith(ext)]


args = parser.parse_args()

pyFiles = getByExtension(args.filenames, '.py')
scmFiles = getByExtension(args.filenames, '.scm')

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...