将数据帧作为压缩的csv直接上传到s3,而无需将其保存在本地计算机上

时间:2019-02-05 15:04:54

标签: python csv dataframe amazon-s3 gzip

如何将压缩后的 csv格式的数据帧上传到S3存储桶中而不先保存在本地计算机上?

我已经使用以下方式连接到该存储桶:

self.s3_output = S3(bucket_name='test-bucket', bucket_subfolder='')

1 个答案:

答案 0 :(得分:1)

我们可以使用标准库中的BytesIO和zipfile创建类似文件的对象。

# 3.7
from io import BytesIO
import zipfile

# .to_csv returns a string when called with no args
s = df.to_csv()

with zipfile.ZipFile(BytesIO(), mode="w",) as z:
  z.writestr("df.csv", s)
  # upload file here

您将要参考upload_fileobj,以自定义上传的行为。

yourclass.s3_output.upload_fileobj(z, ...)