與傳統檔案系統中的層級結構不同,OSS內部使用扁平結構儲存資料。即所有資料均以對象(Object)的形式儲存在儲存空間(Bucket)中。為方便管理,OSS控制台將所有以正斜線(/)結尾的對象顯示為目錄,實作類別似於目錄的準系統。您可以通過目錄的層次來組織檔案,實現分組並簡化許可權管理。
注意事項
本文以華東1(杭州)外網Endpoint為例。如果您希望通過與OSS同地區的其他阿里雲產品訪問OSS,請使用內網Endpoint。關於OSS支援的Region與Endpoint的對應關係,請參見地區和Endpoint。
本文以從環境變數讀取存取憑證為例。如何配置訪問憑證,請參見配置訪問憑證(Python SDK V1)。
本文以OSS網域名稱建立OSSClient為例。如果您希望通過自訂網域名、STS等方式建立OSSClient,請參見初始化(Python SDK V1)。
建立目錄
以下代碼用於建立目錄。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# 填寫Bucket所在地區對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# 填寫Endpoint對應的Region資訊,例如cn-hangzhou。注意,v4簽名下,必須填寫該參數
region = "cn-hangzhou"
# examplebucket填寫儲存空間名稱。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# 填寫目錄名稱,目錄需以正斜線結尾。
bucket.put_object('exampledir/', '')
列舉目錄
以下代碼用於擷取根目錄下所有的子目錄。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# 填寫Bucket所在地區對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# 填寫Endpoint對應的Region資訊,例如cn-hangzhou。注意,v4簽名下,必須填寫該參數
region = "cn-hangzhou"
# examplebucket填寫儲存空間名稱。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# 列舉目錄
def list_directories(bucket, prefix='', delimiter='/'):
result = bucket.list_objects_v2(prefix=prefix, delimiter=delimiter)
directories = []
# 擷取當前層級的目錄
for common_prefix in result.prefix_list:
directories.append(common_prefix)
return directories
# 調用函數擷取根目錄下的所有子目錄
directories = list_directories(bucket)
print("目錄列表:", directories)
刪除目錄
警告
刪除目錄會同步刪除目錄下包含的子目錄以及所有檔案,請謹慎操作。
以下代碼用於刪除examplebucket中log目錄及目錄下的所有檔案。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# 填寫Bucket所在地區對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# 填寫Endpoint對應的Region資訊,例如cn-hangzhou。注意,v4簽名下,必須填寫該參數
region = "cn-hangzhou"
# examplebucket填寫儲存空間名稱。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
prefix = "exampledir/"
# 刪除目錄及目錄下的所有檔案。
for obj in oss2.ObjectIterator(bucket, prefix=prefix):
bucket.delete_object(obj.key)
相關文檔
建立目錄
關於建立目錄的API介面說明,請參見PutObject。
刪除目錄
關於刪除目錄及目錄下所有檔案的完整範例程式碼,請參見GitHub樣本。
關於刪除目錄及目錄下所有檔案的API介面說明,請參見DeleteObject。