Azure存储Blob流到数据框错误

问题描述

我正在尝试将netcdf文件从azure blob存储流式传输到桌面,而不下载到硬盘驱动器。 这就是我所做的:

import logging
import azure.functions as func
import xarray as xr
from azure.storage.blob import BlobServiceClient,BlobClient,ContainerClient
import requests
import io
connect_str="connection string"
blob_service_client=BlobServiceClient.from_connection_string(connect_str)
container_name = "cdspressure"
blobname="1000-temperature.nc"
container_client = blob_service_client.get_container_client(container_name)
blob1=container_client.get_blob_client(blobname).download_blob()
df=xr.open_dataset(blob1)

我收到以下错误

Executed 'Functions.xarray' (Failed,Id=aac8a675-f735-438e-a979-fffd3ac900df,Duration=6994ms)
System.Private.CoreLib: Exception while executing function: Functions.xarray. System.Private.CoreLib: Result: Failure
Exception: AttributeError: 'StorageStreamDownloader' object has no attribute 'tell'
Stack:   File "C:\Program Files\Microsoft\Azure Functions Core Tools\workers\python\3.7/WINDOWS/X64\azure_functions_worker\dispatcher.py",line 345,in _handle__invocation_request
    self.__run_sync_func,invocation_id,fi.func,args)
  File "C:\ProgramData\Anaconda3\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 480,in __run_sync_func
    return func(**params)
  File "C:\Users\terao\Documents\CatCom\CatCommand\CatCommand\xarray\__init__.py",line 13,in main
    df=xr.open_dataset(blob1)
  File "c:\Users\terao\Documents\CatCom\CatCommand\CatCommand\.venv\lib\site-packages\xarray\backends\api.py",line 536,in open_dataset
    engine = _get_engine_from_magic_number(filename_or_obj)
  File "c:\Users\terao\Documents\CatCom\CatCommand\CatCommand\.venv\lib\site-packages\xarray\backends\api.py",line 115,in _get_engine_from_magic_number
    if filename_or_obj.tell() != 0:

解决该问题的任何帮助都将得到体现。预先感谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)