Если я вас правильно понял, ваш вопрос касается передачи списка файлов вместе с несколькими флагами или необязательными параметрами в команду. Если я вас правильно понял, то вам просто нужно использовать параметры аргумента в argparse:
Файл p.py
import argparse
parser = argparse.ArgumentParser(description='SO test.')
parser.add_argument('--doh', action='store_true')
parser.add_argument('files', nargs='*') # This is it!!
args = parser.parse_args()
print(args.doh)
print(args.files)
Комментируемая строка выше информирует парсер о том, что ожидается неопределенное число> = 0 (nargs ='*'
) позиционных аргументов.
Запуск сценария из командной строки дает следующие выходные данные:
$ ./p.py --doh *.py
True
['p2.py', 'p.py']
$ ./p.py *.py
False
['p2.py', 'p.py']
$ ./p.py p.py
False
['p.py']
$ ./p.py
False
[]
Посмотрите, как файлы будут в списке, независимо от того, будут ли они несколько или только один.
НТН!