如何获取阿里云OSS上每个文件夹的大小

原文

https://help.aliyun.com/document_detail/88458.html?spm=a2c4g.11186623.2.11.792462b15oU02q

OSS文件按照字母顺序排列。Python SDK提供了一系列列举文件及获取指定目录下文件大小的方法。

简单列举

以下代码用于列举指定存储空间下的10个文件:

# -*- coding: utf-8 -*-
import oss2
from itertools import islice

# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。 auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>') # Endpoint以杭州为例,其它Region请按实际情况填写。 bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>') for b in islice(oss2.ObjectIterator(bucket), 10): print(b.key)


列举指定前缀的文件

以下代码用于列举包含指定前缀(prefix)的文件:

# -*- coding: utf-8 -*-
import oss2

# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>') # Endpoint以杭州为例,其它Region请按实际情况填写。 bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>') # 列举包含指定前缀的文件。默认列举100个文件。 for obj in oss2.ObjectIterator(bucket, prefix = 'img-'): print(obj.key)


列举存储空间下所有文件

以下代码用于列举指定存储空间下的所有文件:

# -*- coding: utf-8 -*-
import oss2

# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>') # Endpoint以杭州为例,其它Region请按实际情况填写。 bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>') # 设置Delimiter参数为正斜线(/)。 for obj in oss2.ObjectIterator(bucket, delimiter = '/'): # 通过is_prefix方法判断obj是否为文件夹。 if obj.is_prefix(): # 文件夹 print('directory: ' + obj.key) else: # 文件 print('file: ' + obj.key)


获取指定目录下的文件大小

以下代码用于获取指定目录下的文件大小:
import oss2
def CalculateFolderLength(bucket, folder):
    length = 0
    for obj in oss2.ObjectIterator(bucket, prefix=folder, max_keys=1000):
        length += obj.size return length # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。 auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>') # Endpoint以杭州为例,其它Region请按实际情况填写。 bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>') # ObjectIterator 会列举所有的文件或目录,但每次循环列举100个,可以通过 max_keys 来调整数目,最大值为 1000 for obj in oss2.ObjectIterator(bucket, delimiter='/'): if obj.is_prefix(): # 文件夹 length = CalculateFolderLength(bucket, obj.key) print('directory: ' + obj.key + ' length:' + str(length / 1024) + "KB") else: # 文件 print('file:' + obj.key + ' length:' + str(obj.size / 1024) + "KB")

猜你喜欢

转载自www.cnblogs.com/itfat/p/10430238.html