我不知道为什么我得到这个错误,虽然有时我的代码工作正常!
第一个月
下面是我的代码和步骤:
1-客户ID列列表:
customer_id = ["ID","customer_id","consumer_number","cus_id","client_ID"]
字符串
2-查找文件夹中的所有xlsx文件并读取它们的代码:
l = [] #use a list and concat later, faster than append in the loop
for f in glob.glob("./*.xlsx"):
df = pd.read_excel(f).reindex(columns=customer_id).dropna(how='all', axis=1)
df.columns = ["ID"] # to have only one column once concat
l.append(df)
all_data = pd.concat(l, ignore_index=True) # concat all data
型
引擎openpyxl
df = pd.read_excel(f, engine="openpyxl").reindex(columns = customer_id).dropna(how='all', axis=1)
个
现在我得到了一个不同的错误:
BadZipFile: File is not a zip file
型
pandas版本:1.3.0 python版本:python3.9操作系统:MacOS
有没有更好的方法来读取所有的xlsx文件从一个文件夹?
9条答案
按热度按时间xqkwcwgp1#
找到了。当一个Excel文件被打开时,例如MS Excel,一个隐藏的临时文件被创建在同一个目录中:
字符串
所以,当我运行代码从文件夹中读取所有文件时,它会给我错误:
型
当所有的文件都被关闭并且没有隐藏的临时文件
~$filename.xlsx
在同一个目录下时,代码可以完美地工作。332nm8kg2#
另外,请确保您使用的是正确的
pd.read_*
方法。我在尝试使用read_excel()
而不是read_csv()
打开.csv
文件时遇到了这个错误。我发现这个方便的片段here可以根据Excel文件类型自动选择正确的方法。字符串
vq8itlhq3#
在我的例子中,我使用了
xlrd
。所以在终端中:字符串
如果未安装pandas,请安装它:
型
现在这样读取Excel文件:
型
ddhy6vgd4#
您可以通过检查文件是否以“~"开头来过滤掉不需要的临时文件。
字符串
vcudknz35#
https://stackoverflow.com/a/32241271/17411729
链接到如何删除隐藏文件的答案
Mac =转到文件夹,按cmd + shift +。将显示隐藏的文件,删除它,运行它回来。
anhgbhbe6#
在macOS中,每个文件夹中都会自动生成一个名为“.DS_Store”的“不可见文件”。对我来说,这就是问题的根源。我用if语句解决了这个问题,绕过了“不可见文件”(它不是xlsx,因此会触发错误)
字符串
whlutmcx7#
当我手动将“CSV”后缀更改为“XLS”时,我还得到了一个“Excel文件格式.”错误。我所要做的就是打开Excel并保存为我想要的格式。
ryhaxcpt8#
看起来很容易解决这个问题。转到您的Excel文件,无论它是xls或xlsx或任何其他扩展名,并从文件图标中执行“保存为”。当提示选项时。保存为CSV UTF-8(逗号分隔)(*.csv)
vojdkbi09#
对我来说,没有像~$Excel heet.xlsx这样的临时Excel文件。但是.当我不小心在Excel中打开其中一个文件时,不知何故,Excel使该文件无法使用。当我试图再次用Excel打开它时,我意识到这一点,Excel也无法打开它。所以我不得不再次获取该文件,这解决了问题。