使用boto我尝试了以下代码:
from boto.s3.connection import S3Connection
conn = S3Connection('XXX', 'YYYY')
bucket = conn.get_bucket('myBucket')
file_list = bucket.list('just/a/prefix/')
Run Code Online (Sandbox Code Playgroud)
但我无法获取列表的长度或file_list的最后一个元素,因为它是BucketListResultSet类型,请为此方案建议一个解决方案
您正在尝试使用boto库,这是相当过时和不维护的.该库的问题数量正在增加.
目前开发的更好用途boto3.
首先,让我们定义搜索参数:
>>> bucket_name = "bucket_of_m"
>>> prefix = "region/cz/"
Run Code Online (Sandbox Code Playgroud)
导入boto3并创建代表S3资源的s3:
>>> import boto3
>>> s3 = boto3.resource("s3")
Run Code Online (Sandbox Code Playgroud)
获取桶:
>>> bucket = s3.Bucket(name=bucket_name)
>>> bucket
s3.Bucket(name='bucket_of_m')
Run Code Online (Sandbox Code Playgroud)
为具有给定前缀的对象定义过滤器:
>>> res = bucket.objects.filter(Prefix=prefix)
>>> res
s3.Bucket.objectsCollection(s3.Bucket(name='bucket_of_m'), s3.ObjectSummary)
Run Code Online (Sandbox Code Playgroud)
并迭代它:
>>> for obj in res:
... print obj.key
... print obj.size
... print obj.last_modified
...
Run Code Online (Sandbox Code Playgroud)
每个obj都是ObjectSummary(而不是Object本身),但它仍然需要了解它
>>> obj
s3.ObjectSummary(bucket_name='bucket_of_m', key=u'region/cz/Ostrava/Nadrazni.txt')
>>> type(obj)
boto3.resources.factory.s3.ObjectSummary
Run Code Online (Sandbox Code Playgroud)
您可以从中获取Object并根据需要使用它:
>>> o = obj.Object()
>>> o
s3.Object(bucket_name='bucket_of_m', key=u'region/cz/rodos/fusion/AdvancedDataFusion.xml')
Run Code Online (Sandbox Code Playgroud)
过滤的选项并不多,但前缀可用.
| 归档时间: |
|
| 查看次数: |
6012 次 |
| 最近记录: |