当使用Python的boto3库下载Amazon S3中的文件时,您可能会遇到“TypeError: expected string or bytes-like object”错误。这通常是因为下载对象的文件名未正确转换为字符串。
下面是一个示例代码,演示了如何正确下载Amazon S3中的文件并避免此错误:
import boto3
def download_s3_file(bucket_name, file_name, local_path):
s3 = boto3.resource('s3')
bucket = s3.Bucket(bucket_name)
try:
bucket.download_file(file_name, local_path)
print("文件下载成功!")
except Exception as e:
print("文件下载失败:", e)
# 示例用法
bucket_name = 'your_bucket_name'
file_name = 'your_file_name'
local_path = 'your_local_path'
download_s3_file(bucket_name, file_name, local_path)
请确保将bucket_name替换为您的S3存储桶的名称,file_name替换为要下载的文件的名称,local_path替换为要保存下载文件的本地路径。
如果您仍然遇到相同的错误,请检查file_name是否是字符串类型。您可以使用str()函数将其转换为字符串,例如:
file_name = str(file_name)
这样就可以确保将对象的文件名正确转换为字符串类型,从而避免“TypeError: expected string or bytes-like object”错误。