Python 中 Azure Functions 的 Blob 名称模式



我正在Python中实现一个Azure函数,该函数由上传到blob存储的文件触发。我想指定文件名的模式并在代码中使用其部分,如下所示:

function.json:

{
"scriptFile": "__init__.py",
"bindings": [
{
"name": "inputblob",
"type": "blobTrigger",
"direction": "in",
"path": "dev/sources/{filename}.csv",
"connection": "AzureWebJobsStorage"
}
]
}

执行的__init__.py文件如下所示:

import logging
import azure.functions as func

def main(inputblob: func.InputStream):
logging.info('Python Blob trigger function processed %s', inputblob.filename)

我收到的错误消息是:AttributeError: 'InputStream' object has no attribute 'filename'。 作为参考,我使用了这个文档。

我做错了什么还是无法在 Python 中实现我想要的东西?

你的函数代码应该是这样的:

import logging
import os
import azure.functions as func

def main(myblob: func.InputStream):
head, filename = os.path.split(myblob.name)
name = os.path.splitext(filename)[0]
logging.info(f"Python blob trigger function processed blob n"
f"Name without extension: {name}n"
f"Filename: {filename}")

它应该是名称而不是文件名:)

我知道它真的很晚,但我遇到了同样的问题,我得到了一个假期,所以我决定在这里回答你。

你可以在python中重新组装字符串。

内部 init.py-

filenameraw = inputblob.name
filenameraw = filenameraw.split('/')[-1]
filenameraw = filenameraw.replace(".csv","")

有了这个,您将获得所需的输出。 :)

最新更新