Writer s3通过使用Boto3/Python3按列分隔的方式将迭代转换为csv文件
我正在将输出写入csv文件。以下是我的输出:Writer s3通过使用Boto3/Python3按列分隔的方式将迭代转换为csv文件,python,python-3.x,csv,boto3,writer,Python,Python 3.x,Csv,Boto3,Writer,我正在将输出写入csv文件。以下是我的输出: bucket_name | s3_key_path value , value bucket_name | s3_key_path value , value 我希望输出为: bucket_name | s3_key_path value , value value , value value , value 这是我的密码: s3 = boto3.resource(
bucket_name | s3_key_path
value , value
bucket_name | s3_key_path
value , value
我希望输出为:
bucket_name | s3_key_path
value , value
value , value
value , value
这是我的密码:
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()
你知道为什么我的输出总是把每个值的标题放在上面吗?你需要把标题写在
for
循环之前:
header = ['bucket_name', 's3_key_path']
writer = csv.DictWriter(file, fieldnames=header)
writer.writeheader()
for objects in bucket1.objects.filter(Prefix=PREFIX):
否则,将为bucket中的每个对象写入标头