Сценарий Python для чтения нескольких файлов excel в одном каталоге и преобразования их в CSV-файлы в другой каталог

Я относительно новичок в python и Stackoverflow, но надеюсь, что кто-то может пролить некоторый свет на мою текущую проблему. У меня есть скрипт python, который извлекает файлы excel (.xls и .xlsx) из одного каталога и преобразует их в CSV-файлы в другой каталог. Он отлично работает на моих примерах файлов excel (состоящих из 4 столбцов и 1 строки для тестирования), но когда я пытаюсь запустить свой скрипт в другом каталоге с файлами excel (размер файла больше), я получаю ошибка утверждения. Я прикрепил свой код и ошибку. С нетерпением ждем некоторых рекомендаций по этой проблеме. Благодаря!

import os import pandas as pd source = "C:/.../TestFolder" output = "C:/.../OutputCSV" dir_list = os.listdir(source) os.chdir(source) for i in range(len(dir_list)): filename = dir_list[i] book = pd.ExcelFile(filename) #writing to csv if filename.endswith('.xlsx') or filename.endswith('.xls'): for i in range(len(book.sheet_names)): df = pd.read_excel(book, book.sheet_names[i]) os.chdir(output) new_name = filename.split('.')[0] + str(book.sheet_names[i])+'.csv' df.to_csv(new_name, index = False) os.chdir(source) print "New files: ", os.listdir(output) 

Сообщение об ошибке, которое я получаю при выполнении этого сценария в терминале, показано ниже:

Поскольку вы используете Windows, рассмотрите механизм Jet / ACE SQL (файлы Windows .dll), чтобы запросить книги Excel и экспортировать их в файлы CSV, минуя необходимость загрузки / экспорта с помощью фреймов pandas.

В частности, используйте pyodbc для соединения ODBC с файлами Excel, итерации по каждому листу и экспорта в файлы csv с помощью запроса SELECT * INTO ... SQL. Модуль openpyxl используется для извлечения имен листов. Ниже сценарий не полагается на относительные пути, поэтому их можно запускать из любого места. Предполагается, что каждый файл Excel имеет полные столбцы заголовков (без пробелов в используемом диапазоне верхней строки).

 import os import pyodbc from openpyxl import load_workbook source = "C:/Path/To/TestFolder" output = "C:/Path/To/OutputCSV" dir_list = os.listdir(source) for xlfile in dir_list: strfile = os.path.join(source, xlfile) if strfile.endswith('.xlsx') or strfile.endswith('.xls'): # CONNECT TO WORKBOOK conn = pyodbc.connect(r'Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};' + \ 'DBQ={};'.format(strfile), autocommit=True) # RETRIEVE WORKBOOK SHEETS sheets = load_workbook(filename = strfile, use_iterators = True).get_sheet_names() # ITERATIVELY EXPORT SHEETS TO CSV IN OUTPUT FOLDER for s in sheets: outfile = os.path.join(output, '{0}_{1}.csv'.format(xlfile.split('.')[0], s)) if os.path.exists(outfile): os.remove(outfile) strSQL = " SELECT * " + \ " INTO [text;HDR=Yes;Database={0};CharacterSet=65001].[{1}]" + \ " FROM [{2}$]" conn.execute(strSQL.format(output, os.path.basename(outfile, s)) conn.close() 

** Примечание: этот процесс создает файл schema.ini который объединяется с каждой итерацией. Может быть удален.