如何解决无法从 blobstorage 的先前数据帧中附加新数据帧
HTTP 触发后,我想从 blob 存储中读取 .csv 文件并将新数据附加到该文件中。 并希望将数据以 .csv 格式保存到 blob 存储中。请帮帮我.....
scriptpath=os.path.abspath(__file__)
scriptdir=os.path.dirname(scriptpath)
train=os.path.join(scriptdir,'train.csv')
train_df=pd.read_csv(train)
train_df=train_df.append(test_df)
train_df.to_csv(scriptdir+'tt.csv')
block_blob_service.create_blob_from_path(
'files','mytest.csv',scriptdir+'tt.csv',content_settings=ContentSettings(content_type='application/CSV')
)
我的问题是在附加数据后,我必须将该数据保存到 blob 存储中。因此,我必须将所有数据保存在 csv 文件中,但出现上述错误。 Https 触发器不允许我保存 csv 文件。错误显示
Exception: PermissionError: [Errno 13] Permission denied:
'C:\\Users\\Shiva\\Desktop\\project\\loumus\\Imagetrigger'
Stack: File "C:\Program Files\Microsoft\Azure Functions Core Tools\workers\python\3.7/WINDOWS/X64\azure_functions_worker\dispatcher.py",line 357,in _handle__invocation_request
self.__run_sync_func,invocation_id,fi.func,args)
File "C:\Users\Shiva\AppData\Local\Programs\Python\Python37\lib\concurrent\futures\thread.py",line 57,in run
result = self.fn(*self.args,**self.kwargs)
File "C:\Program Files\Microsoft\Azure Functions Core Tools\workers\python\3.7/WINDOWS/X64\azure_functions_worker\dispatcher.py",line 542,in __run_sync_func
return func(**params)
File "C:\Users\Shiva\Desktop\project\loumus\Imagetrigger\__init__.py",line 276,in main
mm.to_csv(scriptdir,'tt.csv')
File "C:\Users\Shiva\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\core\generic.py",line 3403,in to_csv
storage_options=storage_options,File "C:\Users\Shiva\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\io\formats\format.py",line 1083,in to_csv
csv_formatter.save()
File "C:\Users\Shiva\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\io\formats\csvs.py",line 234,in save
storage_options=self.storage_options,File "C:\Users\Shiva\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\io\common.py",line 647,in get_handle
newline="",
解决方法
有几个问题。
- Azure Functions 在托管运行时环境中运行,您无法像在笔记本电脑上运行时那样对本地存储/磁盘具有相同级别的访问权限。并不是说您没有本地磁盘。 STW 和 RTM:
- https://docs.microsoft.com/en-us/azure/azure-functions/functions-scale#service-limits(见存储)
- https://github.com/Azure/Azure-Functions/issues/179
- how much local disk is available in an Azure Function execution context
- https://github.com/Azure/azure-functions-host/wiki/Retrieving-information-about-the-currently-running-function
- Azure Functions Temp storage
-
Use
tempdir
创建临时目录。这将在底层操作系统指定的区域中创建它作为临时存储。 - 写入本地存储然后上传到 ADLS 没有特定原因。你可以:
- 在内存 (e.g.
StringIO
) 中写入 csv 文件,然后使用 SDK 将该str
写入 ADLS。 - 安装适当的驱动程序(不确定您使用的是 pyspark 还是 pandas 或其他东西)并直接将 Dataframe 写入 ADLS。例如。见
one example
。
- 在内存 (e.g.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。