簡體   English   中英

Pandas 和 glob:將文件夾中的所有 xlsx 文件轉換為 csv – TypeError:__init__() 得到了一個意外的關鍵字參數“xfid”

[英]Pandas and glob: convert all xlsx files in folder to csv – TypeError: __init__() got an unexpected keyword argument 'xfid'

我有一個包含許多 xlsx 文件的文件夾,我想將這些文件轉換為 csv 文件。

在我的研究過程中,如果發現有關此主題的多個線程,例如這個那個 基於此,我使用globpandas制定了以下代碼:

import glob
import pandas as pd

path = r'/Users/.../xlsx files'
excel_files = glob.glob(path + '/*.xlsx')

for excel in excel_files:
    out = excel.split('.')[0]+'.csv'
    df = pd.read_excel(excel)         # error occurs here 
    df.to_csv(out)

但不幸的是,我收到以下錯誤消息,在這種情況下我無法解釋,我無法弄清楚如何解決這個問題:

Traceback (most recent call last):
  File "<input>", line 11, in <module>
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/util/_decorators.py", line 299, in wrapper
    return func(*args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/io/excel/_base.py", line 336, in read_excel
    io = ExcelFile(io, storage_options=storage_options, engine=engine)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/io/excel/_base.py", line 1131, in __init__
    self._reader = self._engines[engine](self._io, storage_options=storage_options)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/io/excel/_openpyxl.py", line 475, in __init__
    super().__init__(filepath_or_buffer, storage_options=storage_options)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/io/excel/_base.py", line 391, in __init__
    self.book = self.load_workbook(self.handles.handle)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/io/excel/_openpyxl.py", line 486, in load_workbook
    return load_workbook(
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/openpyxl/reader/excel.py", line 317, in load_workbook
    reader.read()
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/openpyxl/reader/excel.py", line 281, in read
    apply_stylesheet(self.archive, self.wb)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/openpyxl/styles/stylesheet.py", line 198, in apply_stylesheet
    stylesheet = Stylesheet.from_tree(node)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/openpyxl/styles/stylesheet.py", line 103, in from_tree
    return super(Stylesheet, cls).from_tree(node)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/openpyxl/descriptors/serialisable.py", line 87, in from_tree
    obj = desc.expected_type.from_tree(el)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/openpyxl/descriptors/serialisable.py", line 87, in from_tree
    obj = desc.expected_type.from_tree(el)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/openpyxl/descriptors/serialisable.py", line 103, in from_tree
    return cls(**attrib)
TypeError: __init__() got an unexpected keyword argument 'xfid'

有誰知道如何解決這一問題? 非常感謝你的幫助!

我在這里遇到了同樣的問題。 經過幾個小時的思考和搜索,我意識到問題實際上是文件。 我用 MS Excel 打開它,然后保存。 阿拉卡山,問題解決了。

該文件已下載,所以我認為這是一個“安全”錯誤,或者只是文件創建方式的錯誤。 xD

編輯:這不是安全問題,而實際上是生成文件的錯誤。 正確的有 kb 的兩倍是錯誤的文件。 一個解決辦法是:如果使用xlrd==1.2.0可以打開文件,你可以在這樣做之后調用read_excel到Book(由xlrd打開的文件)。

import xlrd

# df = pd.read_excel('TabelaPrecos.xlsx')
# The line above is the same result

a = xlrd.open_workbook('TabelaPrecos.xlsx')
b = pd.read_excel(a)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM