转换文件格式
运用Python将文件夹out中所有.xls文件转化为.xlsx文件并去掉第一列import os
import pandas as pd
# 指定文件夹路径
folder_path = 'F:/code/out/'
# 获取文件夹中所有的.xls文件
files =
# 遍历每个文件
for file in files:
# 构建文件的完整路径
file_path = os.path.join(folder_path, file)
# 读取.xls文件为字典,其中key为工作表名,value为对应的DataFrame
xls_dict = pd.read_excel(file_path, sheet_name=None)
# 遍历每个工作表
for sheet_name, df in xls_dict.items():
# 去掉第一列
df = df.iloc[:, 1:]
# 将修改后的DataFrame保存到字典中
xls_dict = df
# 构建新的文件名
new_file_name = os.path.splitext(file) + '.xlsx'
# 保存为.xlsx文件
new_file_path = os.path.join(folder_path, new_file_name)
with pd.ExcelWriter(new_file_path) as writer:
for sheet_name, df in xls_dict.items():
df.to_excel(writer, sheet_name=sheet_name, index=False)
# 删除旧的.xls文件
os.remove(file_path)
print("转换完成!")
为什么出现以下错误该如何修改
ValueError: Excel file format cannot be determined, you must specify an engine manually. 本帖最后由 陶远航 于 2023-7-20 21:02 编辑
你好,小朋友!出现这个错误是因为 Pandas 在读取文件时无法确定文件的格式,需要手动指定一个引擎。
你可以尝试修改代码,在 pd.read_excel 方法中添加 engine='openpyxl' 参数,以强制指定使用 Openpyxl 引擎进行读取,如下所示:
xls_dict = pd.read_excel(file_path, sheet_name=None, engine='openpyxl')
这样就可以解决 "ValueError: Excel file format cannot be determined" 的问题了。
祝你成功转换文件格式!如果还有其他问题,请随时向我提问。 出现该错误是因为 pd.read_excel() 函数无法确定所读取的文件格式,需要手动指定引擎(engine)。在你的代码中,可以添加一个 engine 参数来解决这个问题。
修改后的代码如下:
import os
import pandas as pd
# 指定文件夹路径
folder_path = 'F:/code/out/'
# 获取文件夹中所有的.xls文件
files =
# 遍历每个文件
for file in files:
# 构建文件的完整路径
file_path = os.path.join(folder_path, file)
# 读取.xls文件为字典,其中key为工作表名,value为对应的DataFrame
xls_dict = pd.read_excel(file_path, sheet_name=None, engine='openpyxl')
# 遍历每个工作表
for sheet_name, df in xls_dict.items():
# 去掉第一列
df = df.iloc[:, 1:]
# 将修改后的DataFrame保存到字典中
xls_dict = df
# 构建新的文件名
new_file_name = os.path.splitext(file) + '.xlsx'
# 保存为.xlsx文件
new_file_path = os.path.join(folder_path, new_file_name)
with pd.ExcelWriter(new_file_path, engine='openpyxl') as writer:
for sheet_name, df in xls_dict.items():
df.to_excel(writer, sheet_name=sheet_name, index=False)
# 删除旧的.xls文件
os.remove(file_path)
print("转换完成!")
在 pd.read_excel() 和 pd.ExcelWriter() 函数中添加了 engine='openpyxl' 参数,显式指定使用 openpyxl 引擎处理Excel文件。
这样就可以解决 "ValueError: Excel file format cannot be determined, you must specify an engine manually." 的问题。
球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
此错误可能是因为你试图使用pandas的 read_excel 方法读取.xls文件,但是没有指定一个处理.xls文件的适当引擎。pandas的 read_excel 方法使用两个主要引擎, openpyxl 和 xlrd 。默认情况下, .xlsx 文件使用 openpyxl , .xls 文件使用 xlrd 。然而,从xlrd版本 2.0.0 开始,不再支持.xls文件,只支持.xlsx文件。
因此,你需要安装一个支持读取.xls文件的库。你可以选择 xlrd<2.0 或者 pyxlsb 。下面是如何进行安装的代码:
pip install 'xlrd==1.2.0'
或者
pip install pyxlsb
然后,在你的代码中指定这个引擎:
# 读取.xls文件为字典,其中key为工作表名,value为对应的DataFrame
xls_dict = pd.read_excel(file_path, sheet_name=None, engine='xlrd')# 如果你安装了xlrd<2.0
或者
# 读取.xls文件为字典,其中key为工作表名,value为对应的DataFrame
xls_dict = pd.read_excel(file_path, sheet_name=None, engine='pyxlsb')# 如果你安装了pyxlsb
这样应该就可以解决你的问题了。如果仍然存在问题,请随时提问。 isdkz 发表于 2023-7-20 18:38
此错误可能是因为你试图使用pandas的 read_excel 方法读取.xls文件,但是没有指定一个处理.xls文件的适当引 ...
为什么会出现以下问题
raise XLRDError('Unsupported format, or corrupt file: ' + msg)
xlrd.biffh.XLRDError: Unsupported format, or corrupt file: Expected BOF record; found b'<?xml ve' 该错误通常在pandas库的`read_excel()`函数无法判断Excel文件的格式时发生。你在这里处理的是.xls文件,这是一种旧的Excel文件格式,通常需要一种名为`xlrd`的库来读取。
由于pandas 1.2.0及以上版本不再支持使用`xlrd`库读取.xls文件,所以如果你的pandas库版本为1.2.0或更高,你需要使用`openpyxl`或`xlrd`来读取.xls文件。
以下是你的代码的修改版本,使用`xlrd`库来读取.xls文件:
import os
import pandas as pd
# 指定文件夹路径
folder_path = 'F:/code/out/'
# 获取文件夹中所有的.xls文件
files =
# 遍历每个文件
for file in files:
# 构建文件的完整路径
file_path = os.path.join(folder_path, file)
# 读取.xls文件为字典,其中key为工作表名,value为对应的DataFrame
# 指定engine为'xlrd'以读取.xls文件
xls_dict = pd.read_excel(file_path, sheet_name=None, engine='xlrd')
# 遍历每个工作表
for sheet_name, df in xls_dict.items():
# 去掉第一列
df = df.iloc[:, 1:]
# 将修改后的DataFrame保存到字典中
xls_dict = df
# 构建新的文件名
new_file_name = os.path.splitext(file) + '.xlsx'
# 保存为.xlsx文件
new_file_path = os.path.join(folder_path, new_file_name)
with pd.ExcelWriter(new_file_path) as writer:
for sheet_name, df in xls_dict.items():
df.to_excel(writer, sheet_name=sheet_name, index=False)
# 删除旧的.xls文件
os.remove(file_path)
print("转换完成!")
请确保已经安装了`xlrd`库。如果没有,你可以使用以下命令进行安装:
pip install xlrd
如果你的pandas库的版本低于1.2.0,那么默认情况下应该是可以直接读取.xls文件的。如果仍然出现这个错误,那可能是你的.xls文件有问题,比如文件损坏或者不是有效的.xls文件。
求最佳答案{:10_254:} ,谢谢啦
页:
[1]