Как распарсить несколько файлов одновременно с помощью модуля argparse
Есть файлы summon.txt, summon_2.txt, summon_3.txt.
Написан вот такой код:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-f', dest='some_file', action='store', default='summon.txt')
args = parser.parse_args()
Этот код позволяет парсить только один файл за раз. А нужно, чтобы можно было парсить одновременно все.
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
Нужно добавить параметр nargs='*', чтобы можно было указать 0 и более файлов, либо nargs='+', если должно быть указано не менее одного файла:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-f', nargs='*', dest="files", default=['summon.txt'], help='A list of files to process')
args = parser.parse_args(["-f", "summon.txt", "summon_2.txt", "summon_3.txt"])
print(args) # Вывод: Namespace(files=['summon.txt', 'summon_2.txt', 'summon_3.txt'])
args = parser.parse_args(["-f"])
print(args) # Вывод: Namespace(files=[]) (считается, что передан список из нуля файлов)
args = parser.parse_args([]) # Если -f не передано вообще, то используется default значение
print(args) # Вывод: Namespace(files=['summon.txt'])
См. argparse, nargs