相关疑难解决方法(0)

从boto3中检索S3存储桶中的子文件夹名称

使用boto3,我可以访问我的AWS S3存储桶:

s3 = boto3.resource('s3')
bucket = s3.Bucket('my-bucket-name')
Run Code Online (Sandbox Code Playgroud)

现在,存储桶包含文件夹first-level,该文件夹本身包含多个以时间戳命名的子文件夹1456753904534.我需要知道我正在做的另一个工作的这些子文件夹的名称,我想知道我是否可以让boto3为我检索这些.

所以我尝试过:

objs = bucket.meta.client.list_objects(Bucket='my-bucket-name')
Run Code Online (Sandbox Code Playgroud)

它提供了一个字典,其中的"内容"键为我提供了所有第三级文件而不是第二级时间戳目录,实际上我得到一个包含所有内容的列表

{u'ETag':'"etag"',u'Key':first-level/1456753904534/part-00014',u'LastModified':datetime.datetime(2016,2,29,13,52,24,tzinfo = tzutc()),
u'Owner':{u'DisplayName':'owner',u'ID':'id'},
u'Size':size,u'StorageClass':'storageclass'}

您可以看到在这种情况下part-00014检索特定文件,而我想单独获取目录的名称.原则上我可以从所有路径中删除目录名称,但是在第三级检索所有内容以获得第二级别是丑陋且昂贵的!

我也试过这里报道的事情:

for o in bucket.objects.filter(Delimiter='/'):
    print(o.key)
Run Code Online (Sandbox Code Playgroud)

但我没有得到所需级别的文件夹.

有办法解决这个问题吗?

python amazon-s3 amazon-web-services boto3

52
推荐指数
9
解决办法
8万
查看次数

aws s3 sync命令仅基于文件大小吗?

是否可以运行s3 sync命令,但仅根据文件大小上传文件,而不仅包括文件的修改日期时间?

我目前正在跑步:

aws s3 sync ./../app/dist s3://mywebsite.me/dist --acl public-read
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,在此之前我先运行gulp命令,并且即使文件内容未更改,也会生成文件。

然后进行同步会导致上传的文件在内容方面尚未修改。

amazon-s3 amazon-web-services gulp

2
推荐指数
1
解决办法
712
查看次数

标签 统计

amazon-s3 ×2

amazon-web-services ×2

boto3 ×1

gulp ×1

python ×1