|
在Python中处理Excel文件时,若需保留`.xlsx`文件不变且仅转换`.xls`文件,需明确区分两种格式。以下是优化后的代码方案:
解决方案:
1. 使用条件判断区分`.xls`和`.xlsx`文件
2. 仅对`.xls`执行转换操作,`.xlsx`直接读取
3. 避免重复读取文件(提升效率)
- import pandas as pd
- def process_excel(file_path):
- if file_path.lower().endswith('.xls'):
- # 读取.xls并转换为.xlsx
- df = pd.read_excel(file_path)
- new_path = file_path.rsplit('.', 1)[0] + '.xlsx'
- df.to_excel(new_path, index=False)
- print(f"已转换: {file_path} -> {new_path}")
- return df # 直接返回已读取的数据
-
- elif file_path.lower().endswith('.xlsx'):
- # 直接读取.xlsx文件
- return pd.read_excel(file_path)
-
- else:
- raise ValueError("仅支持.xls或.xlsx文件")
- # 使用示例
- file_name = "your_file.xls" # 或.xlsx
- data_frame = process_excel(file_name)
- # 后续操作...
复制代码
关键点说明:
1. 通过lower().endswith()兼容大小写扩展名
2. rsplit('.',1)[0] 确保正确替换扩展名(即使文件名中含有点)
3. 转换`.xls`时:
- 读取数据到DataFrame
- 生成新路径(如data.xls → data.xlsx)
- 保存时index=False避免额外索引列
4. 直接返回DataFrame对象,避免重复读取文件
此方案能正确处理两种格式,且不会影响现有`.xlsx`文件运行。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|