gpt4 book ai didi

python - 异常情况下 "resume next"的 Pythonic 方式?

转载 作者:太空狗 更新时间:2023-10-29 20:42:25 25 4
gpt4 key购买 nike

问题:我正在阅读一系列异构输入文件。我为他们每个人写了一个阅读器类,它使用 __init__(self, file_name) 读取文件,并在输入格式错误的情况下抛出异常。

代码如下所示:

clients              = Clients             ('Clients.csv'             )
simulation = Simulation ('Simulation.csv' )
indicators = Indicators ('Indicators.csv' )
legalEntity = LegalEntity ('LegalEntity.csv' )
defaultPortfolio = DefaultPortfolio ('DefaultPortfolio.csv' )
excludedProductTypes = ExcludedProductTypes('ExcludedProductTypes.csv')

问题是我不想死于第一个格式错误的文件,而是阅读所有文件,然后如果至少有一个格式错误则死掉。我能找到的唯一方法看起来很糟糕:

my errors = []    

try:
clients = Clients ('Clients.csv' )
except Exception, e:
errors.append(e)
try:
simulation = Simulation ('Simulation.csv' )
except Exception, e:
errors.append(e)
try:
indicators = Indicators ('Indicators.csv' )
except Exception, e:
errors.append(e)
try:
legalEntity = LegalEntity ('LegalEntity.csv' )
except Exception, e:
errors.append(e)
try:
defaultPortfolio = DefaultPortfolio ('DefaultPortfolio.csv' )
except Exception, e:
errors.append(e)
try:
excludedProductTypes = ExcludedProductTypes('ExcludedProductTypes.csv')
except Exception, e:
errors.append(e)

if len(errors) > 0:
raise MultipleErrors(errors)

有没有更好看的方法来解决这个问题?

最佳答案

按顺序存储类和文件,结果存入字典:

inputs = (
(Clients, 'Clients.csv'),
(Simulation, 'Simulation.csv'),
(Indicators, 'Indicators.csv'),
(LegalEntity, 'LegalEntity.csv'),
(DefaultPortfolio, 'DefaultPortfolio.csv'),
(ExcludedProductTypes, 'ExcludedProductTypes.csv'),
)

results = {}
errors = []
for cls, filename in inputs:
try:
results[cls.__name__[0].lower() + cls.__name__[1:]] = cls(filename)
except Exception, e:
errors.append(e)

if errors:
raise MultipleErrors(errors)

关于python - 异常情况下 "resume next"的 Pythonic 方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18655481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com