我想下载s3文件夹(2021-02-15)中存在的所有csv文件。我尝试了以下方法,但失败了。我怎么做
import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('bucket')
key = 'product/myproject/2021-02-15/'
objs = list(bucket.objects.filter(Prefix=key))
for obj in objs:
client = boto3.client('s3')
client.download_file(bucket, obj, obj)
valueError: Filename must be a string
因为您正在使用
resource
,所以您可以使用download_file:Filter返回集合对象,而不仅仅是名称,^{} 方法需要对象名称:
试试这个:
您还可以使用
print(obj)
打印循环中的obj
对象,以查看它实际拥有的内容Marcin的回答是正确的,但不同路径中具有相同名称的文件将被覆盖。 您可以通过在本地复制S3 bucket的文件夹结构来避免这种情况
相关问题 更多 >
编程相关推荐