如何獲取阿裏雲OSS上每個文件夾的大小
阿新 • • 發佈:2019-02-25
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上每個文件夾的大小