boto的get_resource_type('s3')。Object(bucket_name,key)是否可以使用通配符?

时间:2019-08-13 21:20:22

标签: python boto3 boto

我是python的新手。我正在使用像boto这样的库:

def get_key(self, key, bucket_name=None):
    """
    Returns a boto3.s3.Object

    :param key: the path to the key
    :type key: str
    :param bucket_name: the name of the bucket
    :type bucket_name: str
    """
    if not bucket_name:
        (bucket_name, key) = self.parse_s3_url(key)

    obj = self.get_resource_type('s3').Object(bucket_name, key)
    obj.load()
    return obj

我正在尝试确定Object(bucket_name, key)是否可以使用通配符,以便我可以一次下载多个文件。

我已复制并修改了该文件,以使其打印出type(resource_type),但这只是说<class 'boto3.resources.factory.s3.ServiceResource'>。尽管我可以找到该类的源代码,但是它似乎没有Object()方法,因此我不知道如何回答我的问题。

  1. 如何找到该Object()方法的源代码?
  2. Object(bucket_name, key)是否使用通配符?如果没有,我应该改为调用哪个方法?

1 个答案:

答案 0 :(得分:0)

s3允许您通过1次调用下载1个对象。您必须输入确切的密钥才能下载任何对象。 如果要下载多个对象,则需要使用循环列出要下载的所有密钥。您可以使用list_objects_v2获取所有键的列表,然后根据您的条件过滤掉列表。如果键符合条件,请调用get_object API以下载对象的主体。请注意,这两个调用在客户端都可用,而在资源上不可用。