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

Posted 东大网管

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取阿里云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")

以上是关于如何获取阿里云OSS上每个文件夹的大小的主要内容,如果未能解决你的问题,请参考以下文章

阿里云 oss 文件下载进度显示

请教阿里云 OSS 使用方法

阿里云 oss 小文件上传进度显示

oss 阿里云 web上传文件后怎样获取路径

阿里云OSS上传文件 工具类拿来直接用

网站附件转移到阿里云oss,怎么设置附件路径