多次尝试/除验证配置文件

时间:2017-10-31 18:35:12

标签: python validation config

这是关于Stackoverflow的第一个问题,我是一个完全的Python初学者。

我想写一下,为了坚持使用python,一个小型的Backup-Programm,主要部分已经完成,但是现在我想把它变成一个便携式的"并使用我想验证的配置文件。

我的班级" getBackupOptions"应该返回一个验证字典,该字典应该用" GlobalOptions"和" BackupOption"所以我终于得到了一个完全" BackupOption"我打电话给#34; getBackupOptions.BackupOptions"。

我的问题现在是,(在这个例子中很简单,因为它只是检查Path是否应该递归搜索的函数)如何简化我的代码? 对于每个(可能的)错误,我必须写一个新的" TryExcept"阻止 - 我可以简化它吗?

可能还有另一种验证配置文件/数组的方法吗?

class getBackupOptions:
    def __init__(self,BackupOption,GlobalOptions):
        self.BackupOption = BackupOption
        self.GlobalOptions = GlobalOptions

        self.getRecusive()


def getRecusive(self):
    try:
        if self.BackupOption['recursive'] != None:
            pass
    else:
            raise KeyError
    except KeyError:
        try:
            if self.GlobalOptions['recursive'] != None:
                self.BackupOption['recursive'] = self.GlobalOptions['recursive']
            else:
                raise KeyError
        except KeyError:
            print('Recusive in: ' + str(self.BackupOption) + ' and Global is not set!')
            exit()

实际上我只捕获了一个KeyError,但是如果Key存在但是还有什么不是" True"或"错误"?

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

你可以试试这个

class getBackupOptions:
    def __init__(self,BackupOption,GlobalOptions):
        self.BackupOption = BackupOption
        self.GlobalOptions = GlobalOptions

        self.getRecusive()

    def getRecusive(self):
        if self.BackupOption.get('recursive') == 'True' and self.GlobalOptions.get('recursive') == 'True':
            self.BackupOption['recursive'] = self.GlobalOptions['recursive']
        else:
            print('Recusive in: ' + str(self.BackupOption) + ' and Global is not set!')
            exit()
  • 此处使用get方法,因此不会遇到KeyError
  • 如果字段中包含True以外的任何文字,则会将其视为False