【问题标题】:Azure storage get_blob_to_stream cant download saved csv file as streamAzure 存储 get_blob_to_stream 无法将保存的 csv 文件下载为流
【发布时间】:2018-09-19 21:26:09
【问题描述】:

我想将存储在 Azure 存储中的 CSV 文件下载到流中并直接在我的 python 脚本中使用,但是在 Thomas 的帮助下完成此操作后,我无法使用 pandas read_csv 方法,错误消息是:pandas.io .common.EmptyDataError: No columns to parse from file,因此我假设下载的 CSV 流实际上是空的,但是在签入存储帐户后,CSV 文件中的所有数据都很好,这里有什么问题?下面是 Thomas 的代码:

from azure.storage.blob import BlockBlobService
import io
from io import BytesIO, StringIO
import pandas as pd
from shutil import copyfileobj
with BytesIO() as input_blob:
     with BytesIO() as output_blob:
    block_blob_service = BlockBlobService(account_name='my account', account_key='mykey')

    block_blob_service.get_blob_to_stream('my counter', 'datatest1.csv', input_blob)

    df=pd.read_csv(input_blob)
    print(df)

    copyfileobj(input_blob, output_blob)

    #print(output_blob)

    # Create the a new blob
    block_blob_service.create_blob_from_stream('my counter', 'datatest2.csv', output_blob)

如果我不执行 read_csv 代码,create_blob_from_stream 将创建一个空文件,但如果我执行 read_csv 代码,则会出错:

pandas.parser.TextReader.cinit (pandas\parser.c:6171) pandas.io.common.EmptyDataError:没有要从文件中解析的列

the download file stored fine in the blob storage with all data in it. as showing below:

【问题讨论】:

    标签: python pandas io azure-blob-storage


    【解决方案1】:

    我花了这么多时间终于弄明白了!

    必须执行:

         input_blob.seek(0)
    

    在将流保存到 input_blob 后使用流!!

    【讨论】:

    • 感谢您的提醒。流需要首先回到开头。
    猜你喜欢
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 2021-05-29
    相关资源
    最近更新 更多