【问题标题】:Save csv file directly to S3 bucket将 csv 文件直接保存到 S3 存储桶
【发布时间】:2021-07-10 08:45:28
【问题描述】:

我有一些 python 代码可以将来自 api 的响应保存到我计算机的文件系统中。如何将 api 响应 (csv) 直接保存到 amazon s3 存储桶,而无需将其保存到我的计算机文件系统中。

我查看了使用 bot03 的示例,但它们仅显示了从本地文件系统上传的示例。我想要做的是将 csv 文件 直接 保存到 s3 存储桶中。任何建议将不胜感激 - 我是 python 新手。

这是我用来保存到本地文件系统的代码:

import requests
import csv

def main():
    url = "https://api0.solar.sheffield.ac.uk/pvlive/v3/pes/10?start=2021-01-01T00:00:00&end=2021-07-06T00:00:00&data_format=csv"
    x = requests.get(url,headers={'Content-Type': 'application/json', 'Accept': 'application/json', 'Accept-Encoding': 'gzip, deflate',})
#save to csv
    with open('C:\\Users\myDirectory\myFile.csv', 'wb') as file:
            file.write(x.content)

非常感谢

【问题讨论】:

  • 好的,到目前为止我有这个:s3 = bot03.client("s3") with open("test.csv","rb") as file2: s3.upload_fileobj(x.conent, "BUCKETNAME", "FILENAMEFORS3.CSV") 如何传递凭据以连接到我的存储桶?
  • 您可以使用AWS Command-Line Interface (CLI) aws configure 命令将您的凭据存储在您的计算机上。它将它们存储在~/.aws/credentials中,boto3会自动检测到。

标签: python amazon-web-services amazon-s3


【解决方案1】:

boto3的put_object支持从bytesfile上传文件,不需要你先保存到文件:

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.put_object

Body=b'bytes'|文件,

【讨论】:

    猜你喜欢
    • 2019-10-23
    • 2019-11-07
    • 2016-11-04
    • 2020-10-10
    • 1970-01-01
    • 2017-11-23
    • 1970-01-01
    • 2019-08-07
    • 1970-01-01
    相关资源
    最近更新 更多