Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Writer s3通过使用Boto3/Python3按列分隔的方式将迭代转换为csv文件_Python_Python 3.x_Csv_Boto3_Writer - Fatal编程技术网

Writer s3通过使用Boto3/Python3按列分隔的方式将迭代转换为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(

我正在将输出写入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()

你知道为什么我的输出总是把每个值的标题放在上面吗?

你需要把标题写在
for
循环之前:

        header = ['bucket_name', 's3_key_path']
        writer = csv.DictWriter(file, fieldnames=header)
        writer.writeheader()
        for objects in bucket1.objects.filter(Prefix=PREFIX):
否则,将为bucket中的每个对象写入标头