Python Azure Function Blob Trigger获取触发文件名及报错解决
解决方案
- 修正代码语法错误,确保函数参数与
function.json配置完全匹配 - 通过
func.InputStream对象的name属性获取Blob文件名,无需额外声明name参数
错误原因
报错FunctionLoadError的核心原因有两点:
- 代码中
blob = {myblob.name}的语法错误(用大括号包裹表达式会创建集合,导致函数解析逻辑误判) function.json中path字段的{name}是Blob路径的绑定过滤表达式,不需要在Python函数参数中声明该参数,错误的语法触发了参数不匹配的检测
正确代码实现
import azure.functions as func def main(myblob: func.InputStream): # 获取Blob的完整存储路径,例如:data-upload-pdf-test/bank_data.pdf full_blob_path = myblob.name # 提取纯文件名(如bank_data.pdf) file_name = full_blob_path.split("/")[-1] # 后续可添加PDF内容扫描逻辑 print(f"触发扫描的PDF文件:{file_name}")
确认function.json配置
你的现有配置是正确的,无需修改:
{ "scriptFile": "__init__.py", "bindings": [ { "name": "myblob", "type": "blobTrigger", "direction": "in", "path": "data-upload-pdf-test/{name}.pdf", "connection": "AzureWebJobsStorage", "containerName": "data-upload-pdf-test" } ] }
关键说明
func.InputStream类型的参数自带name属性,返回Blob在存储容器中的完整路径- 若仅需文件名,通过字符串分割截取路径最后一段即可
path中的{name}仅用于匹配容器中.pdf后缀的文件,与函数参数无关,不需要在Python代码中声明
内容的提问来源于stack exchange,提问作者Metel Stairs
相关产品推荐
相关产品推荐

