[英]Writer s3 iterations to a csv file by separted by column using Boto3/Python3
I am writing my output to a csv file.我正在将输出写入 csv 文件。 Here is my output:这是我的输出:
bucket_name | s3_key_path
value , value
bucket_name | s3_key_path
value , value
I want the output to be:我希望输出是:
bucket_name | s3_key_path
value , value
value , value
value , value
Here is my code:这是我的代码:
s3 = boto3.resource('s3',
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY
)
bucket1=s3.Bucket(BUCKET)
def load_into_csv():
with open('/my_path/ms3_files_V2.csv', 'w', newline='') as file:
header=['bucket_name', 's3_key_path']
for objects in bucket1.objects.filter(Prefix=PREFIX):
bucket_name= '{}' .format(bucket1.name)
the_key= '{}' .format(objects.key)
dd={'bucket_name': bucket_name, 's3_key_path': the_key}
writer = csv.DictWriter(file, fieldnames=header)
writer.writeheader()
for row in dd:
print(row)
writer.writerow(row)
load_into_csv()
Any idea as to why my output keeps putting the headers for each value above it?知道为什么我的输出总是将每个值的标题放在它上面吗?
You need to put the writing of the header before the for
loop:您需要将标题的写入放在for
循环之前:
header = ['bucket_name', 's3_key_path']
writer = csv.DictWriter(file, fieldnames=header)
writer.writeheader()
for objects in bucket1.objects.filter(Prefix=PREFIX):
Otherwise the header will be written for each object in the bucket.否则,将为存储桶中的每个对象写入标头。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.