【问题标题】:Python Azure Blob Direct UploadPython Azure Blob 直接上传
【发布时间】:2018-10-04 11:58:09
【问题描述】:

我正在尝试将 Azure blob 中的 csv 作为流读取到 Python 中,然后直接将其写回 Azure blob。读取操作工作得很好,但是写入输出流只是将一个空文件写入 blob。以下代码在 print(df) 之前有效,但在那之后无效。

下面是代码:

代码:

from io import BytesIO, StringIO

with BytesIO() as input_blob:   

  with BytesIO() as output_blob:

    block_blob_service = BlockBlobService(account_name='aaaccc', account_key='*/*/*--')

    block_blob_service.get_blob_to_stream('test', 'Source.csv', input_blob)

    input_blob.seek(0)

    df=pd.read_csv(input_blob)

    print(df)

    copyfileobj(input_blob, output_blob)

    block_blob_service.create_blob_from_stream('test', 'OutFilePy.csv', output_blob)

【问题讨论】:

  • copyfileobj 函数有什么作用?你能编辑你的问题并粘贴它的定义吗?
  • @Saher,copyfileobj 将输入流复制到输出流。我正在尝试将复制的 output_blob 写入 blob 存储,但它只是写入一个空文件
  • 我认为问题可能是input_blob 的光标在pd.read_csv 之后位于EOF。 input_blob.seek(0)read_csv 之后可能会有所帮助。
  • 神奇的 Sraw,它有效!最后一个问题...如果我必须对数据帧进行一些操作并将修改后的数据帧作为流写入 blob 怎么办?
  • @Sraw 您可以将您的评论移至答案以帮助更多社区成员找到,谢谢。

标签: python azure-storage azure-blob-storage


【解决方案1】:

问题是pd.read_csv之后,input_blob的光标在EOF。所以copyfileobj 什么都不复制到output_blob

您可以在read_csv 之后添加input_blob.seek(0) 来解决此问题。

【讨论】:

    猜你喜欢
    • 2016-07-24
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 2021-06-07
    • 2020-12-15
    • 2020-11-09
    • 2013-03-18
    • 2020-10-14
    相关资源
    最近更新 更多