python s3在不知道名称文件的情况下获取文件

时间:2015-07-17 23:28:11

标签: python amazon-s3 boto

我使用python和boto从亚马逊S3获取文件。我使用以下格式上传:year/month/FileNameYYYYMMdd.hhmmss.zip

我的问题是我不知道文件的时间(hhmmss)。有办法搞定吗?例如:

bucket = awsCnx.get_bucket(bucketName)
directory = 'year/month/FileNameYYYYMMdd.*.zip'
bucket.list(prefix=directory)

2 个答案:

答案 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而不是