Я пытаюсь объединить configparser и argparse для скрипта так, чтобы значения по умолчанию для различных аргументов, определенных argparse, сохранялись в файле конфигурации, которым манипулируют через configparser. Проблема, с которой я сталкиваюсь, связана с булевыми опциями. Для этих опций argparse имеет действия store_true
и store_false
, которые автоматически создают значение по умолчанию и указывают, что нужно изменить, когда эта опция задана. Однако, поскольку по умолчанию читается из файла конфигурации, я не знаю, что это за время, чтобы использовать эти действия. Это предполагает что-то вроде:
import argparse,configparser
config = configparser.ConfigParser()
config['DEFAULT']['test'] = 'False'
config.read('testing.cfg')
parser = argparse.ArgumentParser()
if config.getboolean('DEFAULT','test'):
parser.add_argument('-t',action='store_false', dest='test')
else:
parser.add_argument('-t',action='store_true', dest='test')
args = parser.parse_args()
print(args.test)
Тем не менее, мне не нравится идея, что операторы parser.addargument
находятся внутри условных выражений (особенно обременительно, чем больше у меня есть этих опций). Я бы предпочел что-то вроде:
parser.add_argument('-t',action='toggle_boolean',dest='test',default=config.getboolean('DEFAULT','test'))
В этом случае действие toggle_boolean
переключит состояние логического состояния, каким бы оно ни было, когда задан аргумент. Проблема в том, что указанное действие (toggle_boolean
) не существует. Как мне определить такое действие или есть лучший способ сделать это?