Python - проблема извлечения данных из нескольких файлов Excel в папке - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь написать скрипт, который будет открывать / просматривать каждую книгу Excel внутри папки, извлекать конкретные значения из каждой из этих книг, а затем вставлять эти значения в новый CSV-файл.

Мой сценарий (см. Ниже) и все 49 рабочих книг расположены по следующему пути: C: \ Users \ user.name \ Desktop \ Excel Test.

import pandas
import os

info_headers = ['Production Name', 'Data size (GBs)', 'Billable Data size (GBs)']
info = []

files = [file for file in os.listdir('C:\\Users\\user.name\\Desktop\\Excel Test')]
for file in files:
    df = pandas.read_excel(file)
    size = df['Unnamed: 2'].loc[df['QC Checklist'] == 'Data Size (GB):'].values[0]
    name = df['Unnamed: 2'].loc[df['QC Checklist'] == 'Production Volume Name'].values[0]
    bill_size = df['Unnamed: 2'].loc[df['QC Checklist'] == 'Billable Data Size (GB):'].values[0]
    info.append([name, size, bill_size])

output = pandas.DataFrame(info, columns=info_headers)
output.to_csv('C:\\Users\\user.name\\Excel Test')  # This will output a csv in your current directory

Я получаю следующую ошибку при попытке запустить это:

Traceback (most recent call last):
  File "C:/Users/user.name/Desktop/Excel Test/exceltest.py", line 9, in <module>
    df = pandas.read_excel(file)
  File "C:\Users\user.name\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\util\_decorators.py", line 188, in wrapper
    return func(*args, **kwargs)
  File "C:\Users\user.name\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\util\_decorators.py", line 188, in wrapper
    return func(*args, **kwargs)
  File "C:\Users\user.name\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\io\excel.py", line 350, in read_excel
    io = ExcelFile(io, engine=engine)
  File "C:\Users\user.name\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\io\excel.py", line 653, in __init__
    self._reader = self._engines[engine](self._io)
  File "C:\Users\user.name\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\io\excel.py", line 424, in __init__
    self.book = xlrd.open_workbook(filepath_or_buffer)
  File "C:\Users\user.name\AppData\Local\Programs\Python\Python37\lib\site-packages\xlrd\__init__.py", line 157, in open_workbook
    ragged_rows=ragged_rows,
  File "C:\Users\user.name\AppData\Local\Programs\Python\Python37\lib\site-packages\xlrd\book.py", line 92, in open_workbook_xls
    biff_version = bk.getbof(XL_WORKBOOK_GLOBALS)
  File "C:\Users\user.name\AppData\Local\Programs\Python\Python37\lib\site-packages\xlrd\book.py", line 1278, in getbof
    bof_error('Expected BOF record; found %r' % self.mem[savpos:savpos+8])
  File "C:\Users\user.name\AppData\Local\Programs\Python\Python37\lib\site-packages\xlrd\book.py", line 1272, in bof_error
    raise XLRDError('Unsupported format, or corrupt file: ' + msg)
xlrd.biffh.XLRDError: Unsupported format, or corrupt file: Expected BOF record; found b'import p'

1 Ответ

0 голосов
/ 11 июля 2019

Может быть пара проблем.Возможно, он пытается открыть файлы не в формате Excel в каталоге.После вызова os.listdir () попробуйте выполнить фильтрацию только для файлов Excel.

Или ваш файл Excel может быть отформатирован неправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...