Python maneira limpa de agrupar instruções individuais em uma tentativa, exceto o bloco

Atualmente, estou fazendo alguma automação Python do Excel com. É totalmente funcional e faz o que eu quero, mas descobri algo surpreendente. Às vezes, alguns dos comandos do Excel que eu uso falham com uma exceção sem motivo aparente. Outras vezes, eles vão funciona

No código equivalente do VB para o que estou fazendo, esse problema é aparentemente normal e está repleto de umOn Error Resume Next declaração. Python não disse essa afirmação, é clar

Não consigo agrupar todo o conjunto em umtry except loop, porque pode "falhar" no meio e não ser concluído corretamente. Então, qual seria uma maneira pitônica de agrupar várias declarações independentes em uma tentativa, exceto o bloco? Especificamente, algo mais limpo que:

try:
   statement
except:
   pass
try:
   statement
except:
   pass

O código relevante é oexcel.Selection.Borders mordeu

def addGridlines(self, infile, outfile):
    """convert csv to excel, and add gridlines"""
    # set constants for excel
    xlDiagonalDown = 5
    xlDiagonalUp = 6
    xlNone = -4142
    xlContinuous = 1
    xlThin = 2
    xlAutomatic = -4105
    xlEdgeLeft = 7
    xlEdgeTop = 8
    xlEdgeBottom = 9
    xlEdgeRight = 10
    xlInsideVertical = 11
    xlInsideHorizontal = 12
            # open file
    excel = win32com.client.Dispatch('Excel.Application')
    workbook = excel.Workbooks.Open(infile)
    worksheet = workbook.Worksheets(1)

    # select all cells
    worksheet.Range("A1").CurrentRegion.Select()
    # add gridlines, sometimes some of these fail, so we have to wrap each in a try catch block
    excel.Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    excel.Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    excel.Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    excel.Selection.Borders(xlEdgeLeft).LineStyle = xlContinuous
    excel.Selection.Borders(xlEdgeLeft).Weight = xlThin
    excel.Selection.Borders(xlEdgeLeft).ColorIndex = xlAutomatic
    excel.Selection.Borders(xlEdgeTop).LineStyle = xlContinuous
    excel.Selection.Borders(xlEdgeTop).Weight = xlThin
    excel.Selection.Borders(xlEdgeTop).ColorIndex = xlAutomatic
    excel.Selection.Borders(xlEdgeBottom).LineStyle = xlContinuous
    excel.Selection.Borders(xlEdgeBottom).Weight = xlThin
    excel.Selection.Borders(xlEdgeBottom).ColorIndex = xlAutomatic
    excel.Selection.Borders(xlEdgeRight).LineStyle = xlContinuous
    excel.Selection.Borders(xlEdgeRight).Weight = xlThin
    excel.Selection.Borders(xlEdgeRight).ColorIndex = xlAutomatic
    excel.Selection.Borders(xlInsideVertical).LineStyle = xlContinuous
    excel.Selection.Borders(xlInsideVertical).Weight = xlThin
    excel.Selection.Borders(xlInsideVertical).ColorIndex = xlAutomatic
    excel.Selection.Borders(xlInsideHorizontal).LineStyle = xlContinuous
    excel.Selection.Borders(xlInsideHorizontal).Weight = xlThin
    excel.Selection.Borders(xlInsideHorizontal).ColorIndex = xlAutomatic
    # refit data into columns
    excel.Cells.Select()
    excel.Cells.EntireColumn.AutoFit()
    # save new file in excel format
    workbook.SaveAs(outfile, FileFormat=1)
    workbook.Close(False)
    excel.Quit()
    del excel

Atualiza:

Talvez seja necessária alguma explicação sobre o bit de erro. Duas execuções idênticas na minha máquina de teste, com código idêntico, no mesmo arquivo, produzem o mesmo resultado. Uma corrida gera exceções para cadaxlInsideVertical linha. O outro lança exceções para cadaxlInsideHorizontal. Por fim, uma terceira execução é concluída sem nenhuma exceçã

Tanto quanto eu posso dizer Excel considera esse comportamento normal, porque estou clonando o código VB criado pelo gerador de macro do Excel, não o código VB produzido por uma pessoa. Isso pode ser uma suposição errônea, é clar

Funcionará com cada linha agrupada em uma tentativa, exceto no bloco. Eu só queria algo mais curto e mais óbvio, porque 20 linhas agrupadas em seus próprios try catch loops estão apenas pedindo problemas mais tard

Update2:

Este é um arquivo CSV limpo para teste:gist file

Conclusã:

A resposta fornecida por Vsekhar é perfeita. Ele abstrai a supressão de exceção, para que mais tarde, se e quando tiver tempo, eu possa lidar com as exceções à medida que elas ocorrerem. Também permite registrar as exceções para que não desapareçam, não parando outras exceções e é pequeno o suficiente para ser gerenciável facilmente daqui a seis mese

questionAnswers(4)

yourAnswerToTheQuestion