1. 程式人生 > >如何獲取阿裏雲OSS上每個文件夾的大小

如何獲取阿裏雲OSS上每個文件夾的大小

com ring 其它 大小 獲取 最大 tools utf-8 islice

原文

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上每個文件夾的大小