下载包含浮动字段的 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 = ''
行尾的逗号导致字符串变成元组,这作为存储桶名称是无效的。
我正在使用下面的脚本下载整个 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 = ''
行尾的逗号导致字符串变成元组,这作为存储桶名称是无效的。