ConfigArgParse выбрасывает нераспознанные аргументы с конфигурационным файлом по умолчанию - PullRequest
0 голосов
/ 05 сентября 2018

Насколько я понял, с ConfigArgParse я могу установить самую основную конфигурацию в файле config.ini моей программы и сделать некоторые из этих вариантов доступными через командную строку. Однако, когда я устанавливаю свой файл config.ini по умолчанию в конструкторе, я получаю следующую ошибку:

main.py: error: unrecognized arguments: --input_base data

где --input_base - единственная конфигурация, не включенная в мой синтаксический анализатор, как видно из следующего:

parser = ArgParser(default_config_files=['config.ini'])
parser.add_argument('-out', '--output_base', type=str, help='xyz')
parser.add_argument('--amount', type=int, help='xyz')
parser.add_argument('--num_jobs', help='xyz')
parser.add_argument('--batch_size', type=int, help='xyz')
parser.add_argument('--queue_size', type=int, help='xyz')
parser.add_argument('--kind', choices={'long', 'short', 'both'}, help='xyz')
parser.add_argument('--level', choices={'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'}, help='xyz')
config = parser.parse_args()

Работает только с помощью config.ini, но из-за удобства использования я должен также включать аргументы командной строки.

Спасибо за вашу помощь. Цени это!

1 Ответ

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

Попробуйте изменить последнюю строку на:

config, unknown = parser.parse_known_args()

Это будет анализировать только известные аргументы (игнорируя все неизвестные).

как в этом вопросе: Python argparse игнорирует нераспознанные аргументы

...