多次尝试/验证ConfigFi除外

2024-04-23 11:22:30 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我想写一个小的备份程序,主要部分已经完成,但是现在我想让它有点“可移植”,并使用一个配置文件,我想验证它

我的类“getBackupOptions”应该返回一个validate dict,该dict应该用“GlobalOptions”和“BackupOption”来丰富,这样当我调用“getBackupOptions.BackupOptions”时,我最终会得到一个完整的“BackupOption”dict

我现在的问题是,(在这个例子中,它容易吗,因为它只是检查路径是否应该递归搜索的函数)如何简化我的代码? 对于每个(可能的)错误,我必须编写一个新的“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()

事实上,我只捕捉到一个键错误,但是如果键在那里,但是除了“真”或“假”之外,还有别的东西呢

非常感谢你的帮助


Tags: selfnoneifdef配置文件错误elsedict
1条回答
网友
1楼 · 发布于 2024-04-23 11:22:30

你可以试试这个

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

相关问题 更多 >