15

問題: 一連の異種入力ファイルを読み込んでいます。を使用してファイルを読み取り、__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')

問題は、最初の不正なファイルで死ぬのではなく、それらすべてを読み取り、少なくとも 1 つが不正な形式である場合に死ぬことです。私が見つけた唯一の方法は恐ろしく見えます:

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)

問題にアプローチするためのより良い方法はありますか?

4

2 に答える 2

5

次のようなことを試すことができます:

handlers_mapping = {
    Clients: 'Clients.csv',
    Simulator: 'Simulator.csv',
    Indicators: 'Indicators.csv',
    LegalEntity: 'LegalEntity.csv',
    DefaultPortfolio: 'DefaultPortfolio.csv',
    ExcludedProductTypes: 'ExcludedProductTypes.csv'
}

results = {}
errors = []
for handler, file_name in handlers_mapping.iteritems():
    try:
        results[handler] = handler(file_name)
    except Exception, e:
        errors.append(e)
于 2013-09-06T10:32:25.557 に答える