Using Python how do you bypass or move an excel file in a folder if it is corrupt?

crompnk used Ask the Experts™

I am using the following Python code in a bigger script, but when some excel files (.xls) are corrupt I get the following error:

raise XLRDError('Unsupported format, or corrupt file: ' + msg)

XLRDError: Unsupported format, or corrupt file: Expected BOF record; found b'X\xcf\x13\xe0\xa1\xb9\x1a\xe1'

It fails when opening a workbook that is corrupt (wb = xlrd.open_workbook(filepath)), which ends the script. Is there a way I can modify the script to bypass the corrupt excel file or move it somewhere else and allow the script to move on?

import pandas as pd
import os
import xlrd
import shutil
from os import path

for subdir, dirs, files in os.walk(r'C:\Temp'):
    for file in files:
        filepath = subdir + os.sep + file
        wb = xlrd.open_workbook(filepath)

Open in new window

Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Fractional CTO
Distinguished Expert 2018
Check docs for the wb = xlrd.open_workbook() call you're making.

1) The wb variable will either be NULL... or...

2) There will be some other error message returned some way.

You'll either check for wb == NULL or the other error return code + if you get any failure, then you just skip the failing file (or move it or delete it), then keep processing files which return success.

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial