本文介绍解
决 pandas `read_excel` 函数因直接传入字节数据(bytes)而触发弃用警告的问题,推荐使用 `bytesio` 封装字节流作为标准、安全且兼容性良好的替代方案。
当从云存储(如 Azure Blob Storage、AWS S3)或内存中读取 Excel 文件时,常通过 .readall() 或 .read() 获取原始字节(bytes),但新版 pandas 已明确弃用将 bytes 直接传入 pd.read_excel() 的用法——这会触发 FutureWarning,并在未来版本中彻底移除支持。
✅ 正确做法是:将字节数据包装为类文件对象(file-like object),最常用且轻量的方式是使用 Python 标准库中的 BytesIO:
from io import BytesIO import pandas as pd # 假设 blob_data 是一个支持 readall() 的二进制数据源(如 Azure BlobClient) excel_bytes = blob_data.readall() # type: bytes df = pd.read_excel(BytesIO(excel_bytes), engine='openpyxl')
? 关键说明:
⚠️ 注意事项:
for chunk in pd.read_excel(BytesIO(excel_bytes), engine='openpyxl', chunksize=1000):
process(chunk)该方案无需更换库,兼容所有主流 pandas 版本(≥1.4.0),是当前最简洁、稳定、符合官方推荐的实践方式。