【发布时间】:2021-01-28 15:06:28
【问题描述】:
我正在努力解决以下问题:
我每天收到一个 .xls 文件。但是,该文件的格式与扩展名不同。有时是 .xlsx,有时是 .xlsb。我正在尝试将此文件的内容读入熊猫数据框中,因此我编写了以下代码:
import openpyxl
import pyxlsb
import pyodbc
import os
import pandas as pd
try:
full_name1 = "my_file.xls"
full_name2 = "my_file.xlsx"
os.rename(full_name1, full_name2)
df = pd.read_excel(full_name2, sheet_name = 'Sheet 2', engine = 'openpyxl', skiprows = range(0, 7), usecols = "A:X")
except:
full_name1 = "my_file.xlsx"
full_name2 = "my_file.xlsb"
os.rename(full_name1, full_name2)
df = pd.read_excel(full_name2, sheet_name = 'Sheet 2', engine = 'pyxlsb', skiprows = range(0, 7), usecols = "A:X")
但是,我得到了错误:
[WinError 32] 进程无法访问该文件,因为它正被另一个进程使用:'my_file.xlsx' -> 'my_file.xlsb'
“my_file.xlsx”似乎仍在使用中。
有没有办法解决这个问题?
【问题讨论】:
-
您真的需要重命名文件吗?为什么不将
pd.read_excel与不同的引擎一起使用?如果第一个不起作用,请使用第二个。 -
不幸的是,我确实需要重命名。由于 excel 文件的格式(51 - 这是 .xlsx 或 50 - for.xlsb 的格式)和扩展名(.xls)不一致,python 对 xlrd 和 openpyxl/pyxlsb 都抛出错误。
标签: python pandas dataframe error-handling try-except