【问题标题】:Trying to create CSV file directly in S3 and write data in CSV尝试直接在 S3 中创建 CSV 文件并在 CSV 中写入数据
【发布时间】:2019-12-18 05:18:28
【问题描述】:

大家好,我正在尝试在 S3 中创建 csv 并在 csv 中提供数据,但无法存档。

下面是代码

import boto3
import csv
import time

date=time.strftime("%d-%m-%Y")

BUCKET_NAME = 'bucketname'
PREFIX = '/'
filename = f'result{date}.csv'

sts_s3 = boto3.resource('s3', region_name='us-west-2', endpoint_url='https://sts.us-west-2.amazonaws.com')
obj = sts_s3.Object(BUCKET_NAME, filename)


with open(f"s3://{BUCKET_NAME}{PREFIX}{filename}", 'w', newline='') as f:
    column = ['1111','2222', '3333']
    thewriter = csv.DictWriter(f, fieldnames=column)
    writer = csv.writer(f)
    thewriter.writeheader()
    thewriter.writerow({'1111': 'aaa','2222':'bbb', '3333':'ccc'})

【问题讨论】:

  • Python 的 open 不支持 URL。您需要使用以下 boto3 方法之一:Object.download_file()Object.download_fileobj()Object.get()
  • @AmitBaranes 我正在创建一个空白文件并尝试使用 Python CSV 模块在其中提供数据
  • 我可以创建一个空白的 csv 文件,但无法在文件中输入数据
  • 有什么更新吗?你需要这方面的帮助吗?

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


【解决方案1】:

这里是使用 s3fs 和 pandas 的示例。使用我创建的 pandas,处理数据并使用 s3fs 上传到 s3。----> pip install pandas 和 pip install s3fs

import s3fs
import pandas as pd

ACCESS_KEY='XXXXXXXXXXXXXXXXXXX'
SECRET_KEY='YYYYYYYYYYYYYYYYYYYYYY'

data = [['tom', 10], ['nick', 15], ['juli', 14]]
df = pd.DataFrame(data, columns = ['Name', 'Age'])

bytes_to_write = df.to_csv(None).encode()
fs = s3fs.S3FileSystem(key=ACCESS_KEY, secret=SECRET_KEY)
with fs.open('s3://mybuckets//file.csv', 'wb') as f:
    f.write(bytes_to_write)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-09
    • 2015-07-17
    • 2021-10-15
    • 2019-12-08
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    相关资源
    最近更新 更多