gpt4 book ai didi

python - 以写入模式从 S3 打开 csv 文件并将内容写入文件

转载 作者:行者123 更新时间:2023-11-30 22:20:34 25 4
gpt4 key购买 nike

我可以使用 Boto3 成本浏览器按 AWS 帐户和应用程序获取账单金额。结果我得到了一个 json 响应。目前,我正在将 json 转换为 csv 文件并将其存储在本地计算机上。一切都很好。

但是,我想直接在 S3 中获取 csv 文件。就像在 S3 中创建 csv 文件一样,创建 header 并将内容从 json 复制到 csv。是否可以使用 s3.Object 来做到这一点?

我正在尝试使用这样的东西:

bucket = s3.Bucket('my-bucket')

header = 'Account Number;Application;Amount\n'
with open('test.csv', 'wt') as file_object:
file_object.write(header)

我没有收到任何错误,但也没有结果。

更新的问题 - 这就是我将 json 转换为 csv 以仅获取我需要的列的方法:

import boto3
import json
import csv
import yaml

client = boto3.client('ce',
region_name='us-east-1',
aws_access_key_id='AWS Access Key',
aws_secret_access_key='AWS Secret Access Key')

response = client.get_cost_and_usage(
TimePeriod={
'Start': '2018-01-01',
'End': '2018-02-01'
},
Granularity='MONTHLY',
Metrics=[
'BlendedCost',
],
GroupBy=[
{
'Type': 'DIMENSION',
'Key': 'LINKED_ACCOUNT'
},
{
'Type': 'TAG',
'Key': 'Application'
},
],
)

response_ser = json.dumps(response)

# decode the unicode strings without converting the datatype
decode_response = yaml.safe_load(response_ser)

# get the first object in the response json
results_obj = decode_response['ResultsByTime']
results_dict = results_obj[0]

#get the groups
response_groups = results_dict['Groups']

raw_data = open(local_file, "w")
csvwriter = csv.writer(raw_data)
fieldnames = ['Account Number', 'Application', 'Amount']
writer = csv.DictWriter(raw_data, fieldnames=fieldnames)
writer.writeheader()

for i in response_groups:
accountNumber = i['Keys'][0]
application = i['Keys'][1]
amount = i['Metrics']['BlendedCost']['Amount']
writer.writerow({'Account Number': accountNumber, 'Application':
application, 'Amount': amount})

raw_data.close()

因此,我不想在本地计算机上创建 csv 文件,而是希望在 S3 中创建它。我能够使用正确的 key 连接到 S3 存储桶,并且可以将文件从我的计算机上传到 S3。但是,当我尝试在 S3 中创建文件时,它不起作用。我在这里做错了什么吗?

最佳答案

pip install smart_open

>>> # stream content *into* S3 (write mode):
>>> with smart_open.smart_open('s3://mybucket/mykey.txt', 'wb') as fout:
... for line in ['first line', 'second line', 'third line']:
... fout.write(line + '\n')

关于python - 以写入模式从 S3 打开 csv 文件并将内容写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48815646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com