我使用python和boto从亚马逊S3获取文件。我使用以下格式上传:year/month/FileNameYYYYMMdd.hhmmss.zip
我的问题是我不知道文件的时间(hhmmss)。有办法搞定吗?例如:
bucket = awsCnx.get_bucket(bucketName)
directory = 'year/month/FileNameYYYYMMdd.*.zip'
bucket.list(prefix=directory)
答案 0 :(得分:2)
来自boto source-code:
def list(self, prefix='', delimiter='', marker='', headers=None,
encoding_type=None):
"""
...
:type prefix: string
:param prefix: allows you to limit the listing to a particular
prefix. For example, if you call the method with
prefix='/foo/' then the iterator will only cycle through
the keys that begin with the string '/foo/'.
...
您可以在docs
中详细了解相关信息所以我认为没有理由不按你所写的方式完全实现它,只需稍微更改声明:
directory = 'year/month/FileNameYYYYMMdd'
(用正确的日期代替日期模式)。
答案 1 :(得分:0)
bucket
支持前缀选项!以下是其用法示例:
bucket = awsCnx.get_bucket(bucketName)
directory = 'year/month/FileName'
keys = bucket.get_all_keys(prefix=directory)
keys
将是一个s3键列表,其中包含以year/month/FileName*
开头的所有文件,您可以从中获取其名称(keys[0].name
)或其内容(keys[0].get_contents_as_string
)
bucket.list
也可以使用前缀,但返回BucketListResultSet而不是