这是关于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"或"错误"?
非常感谢你的帮助!
答案 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
。