关于 python 中 boto 模块的 bucket.list()



方法bucket.list()是否不仅带来文件名或大小等文件的完整数据?

data/hello/有三个 1,000,000 字节的文件:

data/hello/0001.txt (1,000,000 bytes)
data/hello/0002.txt (1,000,000 bytes)
data/hello/0003.txt (1,000,000 bytes)

我运行了我的代码(下面)。

结果大小为 3000000。

这让我认为它带来了文件的全部数据并产生了更多的流量。我说的对吗?

conn = boto.connect_s3()
bucket = conn.get_bucket('my_bucket')
object_list = bucket.list(prefix='data/hello/')
data_size = 0
for object in object_list:
    for data in object:
        if type(data) is str:
            data_size += len(data)
print('size: %d'%data_size)

不,bucket.list 不会获取所有对象的内容。当你迭代bucket.list返回的每个keys时,boto 会进行单独的调用来获取对象的内容(大概是使用生成器)。

即,它在循环的每次迭代中获取内容:

for data in object:
    # data is fetched right before here
    if type(data) is str:

最新更新