Хотя я не совсем уверен, я бы сделал одну из двух вещей
Создайте функцию, которая принимает ConfigParser
объект и преобразует его в Argparse
эквивалент
- инструмент исправления
- работает нормально
- запустите волшебную часть, которая выводит теперь проанализированный объект ConfigParser как большую строку команд Argparse в новый файл для вашего удобства просмотра
Напишите для него регулярное выражение и выполните прямое преобразование
- написать новый скрипт
- пройти в пути конфигурации
- запустите волшебную часть, которая выводит теперь проанализированный объект ConfigParser как большую строку команд Argparse в новый файл для вашего удобства просмотра
Простое использование string.format()
, вероятно, хорошо
# make a template for your Argparse options
GENERIC_COMMAND = """\
parser.add_argument(
"--{long_name}", "-{short_name}",
default="{default}",
help="help_text")"""
...
# parse ConfigParser to commands
commands = [
{
"long_name": "argumentA",
},
{
"long_name": "argumentB",
"help_text": "Do Thing B"
},
...
]
commands_to_write_to_file = []
for command in commands:
try:
commands_to_write_to_file.append(
GENERIC_COMMAND.format(**command)) # expand command to args
except Exception as ex:
print("Caught Exception".format(repr(ex)))
# to view your commands, you can write commands to file
# or try your luck with the help command
with open(out.txt, "w") as fh:
fh.write("\n\n".join(commands_to_write_to_file))
Ни одно из этих решений не является отличным, но я ожидаю, что 90% выполненной работы будет выполнено легко, оставив хорошую регистрацию и себя, чтобы найти и преобразовать оставшиеся несколько странных команд.
Как только вы довольны выводом, вы можете избавиться от логики дампа и заполнить аргументы argparse непосредственно вместо них
for command in commands:
argparse.add_argument(**command)