使用 Boto3/Python3 按列分隔的 Writer s3 迭代到 csv 文件
Writer s3 iterations to a csv file by separted by column using Boto3/Python3
我正在将输出写入 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('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()
知道为什么我的输出总是将 headers 放在它上面的每个值吗?
你需要把header的写法放在for
循环之前:
header = ['bucket_name', 's3_key_path']
writer = csv.DictWriter(file, fieldnames=header)
writer.writeheader()
for objects in bucket1.objects.filter(Prefix=PREFIX):
否则将为存储桶中的每个 object 写入 header。
我正在将输出写入 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('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()
知道为什么我的输出总是将 headers 放在它上面的每个值吗?
你需要把header的写法放在for
循环之前:
header = ['bucket_name', 's3_key_path']
writer = csv.DictWriter(file, fieldnames=header)
writer.writeheader()
for objects in bucket1.objects.filter(Prefix=PREFIX):
否则将为存储桶中的每个 object 写入 header。