Pep*_*eng 3 python io azure-storage-blobs pandas
我想将存储在Azure存储中的CSV文件下载到流中,并直接在我的python脚本中使用,但是在Thomas的帮助下完成此操作后,我无法使用pandas read_csv方法,错误消息为:pandas.io.common。 EmptyDataError:没有要从文件中解析的列,因此我假设下载的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)
Run Code Online (Sandbox Code Playgroud)
如果我不执行read_csv代码,则create_blob_from_stream将创建一个空文件,但是如果我执行read_csv代码,则会出现错误:
pandas.parser.TextReader。CINIT(熊猫\ parser.c:6171)pandas.io.common.EmptyDataError:没有列从文件解析
the download file stored fine in the blob storage with all data in it. as showing below:
Run Code Online (Sandbox Code Playgroud)
在花了很多时间之后,我终于弄清楚了!
必须执行:
input_blob.seek(0)
Run Code Online (Sandbox Code Playgroud)
将流保存到input_blob后使用流!
| 归档时间: |
|
| 查看次数: |
1103 次 |
| 最近记录: |