我目前正在使用Azure,我对DataFactory中的预定义函数感到不满,因为它们在后台启动了一个集群,这对我的问题来说绝对没有必要。
我在预定义的文件夹中收到一个csv文件,希望选择一组列,并将它们按特定顺序存储在csv文件中。
目前我的文件如下:
JSON文件:
"bindings": [
{
"name": "myblob",
"type": "blobTrigger",
"path": "input-raw",
"connection": "AzureWebJobsStorage",
"direction": "in"
},
{
"name": "outputblob",
"type": "blob",
"path": "{blobTrigger}-copy",
"connection": "AzureWebJobsStorage",
"direction": "out"
}
],
"disabled": false,
"scriptFile": "__init__.py"
}
init.py:
import logging
import azure.functions as func
def main(myblob: func.InputStream, outputblob: func.Out[func.InputStream]):
logging.info(f"Python blob trigger function processed blob n"
f"Name: {myblob.name}n"
f"Blob Size: {myblob.length} bytes")
outputblob.set(myblob)
我的函数在文件夹中选择一个文件,并在最后将其复制到同一文件夹中的"-copy"。有没有一种简单的方法可以访问数据并使用python进行编辑?
Toll现在我尝试了包"csv"、"io"one_answers"fileinput"来读取信息,但直到现在我都无法编辑甚至查看我的VisualStudioCode中的数据。
如果你需要更多信息,请告诉我。
最佳P
事实上,没有办法"编辑".csv文件。但您可以下载.csv文件并更改它,然后上传以覆盖azure上的.csv文件。
顺便说一句,如果我读对了,你的函数有一个大问题。当azure函数被触发时,你的容器中会有无尽的"xx副本"文件。我的意思是,输出文件将是函数的触发条件,函数将是无止境的。
这是我的函数,它使用func中的InputStream读取blob数据:
import logging
import azure.functions as func
def main(myblob: func.InputStream):
logging.info(myblob.read().decode("utf-8") );
logging.info(f"Python blob trigger function processed blob n"
f"Name: {myblob.name}n"
f"Blob Size: {myblob.length} bytes")
{
"scriptFile": "__init__.py",
"bindings": [
{
"name": "myblob",
"type": "blobTrigger",
"direction": "in",
"path": "samples-workitems",
"connection": "AzureWebJobsStorage"
}
]
}
在我的情况下,我首先将blob数据读取为字节,然后将其转换为字符串。让我知道这是否能解决你的问题。:(