1

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

函数.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 中实现我想要的?

4

2 回答 2

2

你的功能代码应该是这样的:

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}")

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

于 2020-06-24T07:22:51.277 回答
1

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

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

init.py -

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

有了这个,你会得到你想要的输出。:)

于 2021-07-20T13:49:58.743 回答