我正在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","")
有了这个,您将获得所需的输出。 :)