下载包含浮动字段的 S3 文件夹

Download S3 Folder Including Float Field

我正在使用下面的脚本下载整个 S3 存储桶(使用来自 https://whosebug.com/users/9806031/konstantinos-katsantonis in 的答案)。

存储桶中的每个对象都是一个包含相同结构的 csv 文件:4 个字段。 1 个时间戳,2 个字符串,1 个浮点数。始终按此顺序。

import boto3
import botocore
import os

s3 = boto3.resource("s3",
                  region_name='us-east-2',
                  aws_access_key_id = '',
                  aws_secret_access_key = ''
                  )
bucket_name = '',
s3_folder = '',
local_dir = r''

def download_s3_folder(bucket_name, s3_folder, local_dir):
    bucket = s3.Bucket(bucket_name)
    for obj in bucket.objects.filter(Prefix=s3_folder):
        target = obj.key if local_dir is None \
            else os.path.join(local_dir, os.path.relpath(obj.key, s3_folder))
        if not os.path.exists(os.path.dirname(target)):
            os.makedirs(os.path.dirname(target))
        if obj.key[-1] == '/':
            continue
        bucket.download_file(obj.key, target)
download_s3_folder(bucket_name, s3_folder, local_dir)  

当我执行脚本时,出现以下错误。我怀疑这是浮动的结果。

TypeError: expected string or bytes-like object

解决此问题的最佳方法是什么?

这些行:

bucket_name = '',
s3_folder = '',

应该是:

bucket_name = ''
s3_folder = ''

行尾的逗号导致字符串变成元组,这作为存储桶名称是无效的。