【发布时间】: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