Добавляйте все файлы Excel в каталоге ТОЛЬКО в массив, если он содержит лист спецификаций c - PullRequest
0 голосов
/ 11 марта 2020

В настоящее время я читаю все файлы Excel и добавляю лист данных в массив из данного каталога. Проблема заключается в том, что некоторые файлы Excel в каталоге на самом деле не должны быть там и не содержат лист «данных». Затем программа ломается всякий раз, когда сталкивается с таким случаем. Мой обходной путь - печать имени файла перед его добавлением, а затем удаление файла вручную и повторный запуск сценария. Я попытался создать функцию Sheet_check, как показано ниже, хотя это значительно замедлило время выполнения и также не сработало, как предполагалось.

В: Если существует простой / эффективный метод добавления только файла Excel, если существует определенный лист c

read_files = glob.glob(os.path.join(file_path, "*.xlsx"))

file_array = []
for files in read_files:
    #Remove_password_xlsx(files, password)

    #if Sheet_check(files) == False:
        #read_files.remove(files)

    print(files)
    data = pd.read_excel(files, 'Data')
    file_array.append(data)

Не работает :

def Sheet_check(filename):
    bAvailable = False
    book = load_workbook(filename)
    sheets = book.sheetnames
    for sheet in sheets:
        if sheet.upper() == "DATA":
            bAvailable = True
            break
    return bAvailable

1 Ответ

1 голос
/ 11 марта 2020

Использование исключений должно работать:

from xlrd import XLRDError
read_files = glob.glob(os.path.join(file_path, "*.xlsx"))

file_array = []
for files in read_files:
    #Remove_password_xlsx(files, password)

    #if Sheet_check(files) == False:
        #read_files.remove(files)

    print(files)
    try:
        data = pd.read_excel(files, sheet_name='Data')
        file_array.append(data)
    except XLRDError:
        print('No "Data" sheet')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...