Azure Functions Python Blob Trigger中InputStream转可操作对象问题咨询
字节流转可操作对象实现方案
核心逻辑
func.InputStream的read()方法返回标准二进制字节流,通过io.BytesIO封装为类文件对象后,可直接对接Python生态所有支持字节输入的工具库,无需落地为本地临时文件。
场景1:转换为Pandas DataFrame
前置依赖
需在项目requirements.txt中添加对应依赖:
pandas>=2.0.0 # 若需要处理Excel文件添加以下依赖 openpyxl>=3.1.0 # 若需要处理parquet文件添加以下依赖 pyarrow>=12.0.0
代码实现(替换原函数中对应占位部分即可)
import io ### Manipulate with Pandas ### # 读取字节流封装为类文件对象 blob_byte_stream = io.BytesIO(myblob.read()) # 根据Blob文件格式选择对应pandas读取方法: # 1. 源文件为CSV格式 df = pd.read_csv(blob_byte_stream) # 2. 源文件为Excel格式 # df = pd.read_excel(blob_byte_stream) # 3. 源文件为parquet格式 # df = pd.read_parquet(blob_byte_stream) # 此处可对df做任意数据处理 # 例如新增列、过滤、聚合等操作 df['processed_flag'] = 1 ### Output ### # 处理后的DataFrame转为csv字符串写入输出Blob output = df.to_csv(index=False, encoding='utf-8') outputBlob.set(output)
场景2:转换为图片可操作对象(以JPG/PNG等格式为例)
前置依赖
需在项目requirements.txt中添加依赖:
Pillow>=9.5.0
代码实现
import io from PIL import Image # 读取字节流封装为类文件对象 blob_byte_stream = io.BytesIO(myblob.read()) # 转为PIL Image可操作对象 img = Image.open(blob_byte_stream) # 此处可对图片做任意处理 # 例如转灰度、调整尺寸、提取像素矩阵等 img_gray = img.convert('L')
注意事项
- 若处理超大体积Blob(超过100MB),建议开启流式读取避免内存溢出,可通过分段读取
myblob.read(size)的方式处理 - 不同文件格式的处理逻辑仅需替换对应工具库的读取接口,所有支持类文件对象输入的库都可以直接适配该方案
内容的提问来源于stack exchange,提问作者user2058291
相关产品推荐
相关产品推荐

