python批量下载oss文件
import oss2
import os
endpoint = "oss-cn-shenzhen.aliyuncs.com"
accesskey_id = "***"
accesskey_secret = "***"
bucket_name = "aaa"
download_local_save_prefix = "本地路径"
'''
列举prefix全部文件
'''
def prefix_all_list(bucket, prefix):
print("开始列举" + prefix + "全部文件")
oss_file_size = 0
for obj in oss2.ObjectIterator(bucket, prefix='%s/' % prefix):
oss_file_size = oss_file_size + 1
download_to_local(bucket, obj.key, obj.key)
print(prefix + " file size " + str(oss_file_size))
'''
列举全部的根目录文件夹、文件
'''
def root_directory_list(bucket):
num = 0
for obj in oss2.ObjectIterator(bucket, delimiter='/'):
if obj.is_prefix():
print('directory: ' + obj.key)
prefix_all_list(bucket, str(obj.key).strip("/"))
else:
print('file: ' + obj.key)
download_to_local(bucket, str(obj.key), str(obj.key))
num += 1
print(num)
'''
下载文件到本地
'''
def download_to_local(bucket, object_name, local_file):
url = download_local_save_prefix + local_file
file_name = url[url.rindex("/") + 1:]
file_path_prefix = url.replace(file_name, "")
if False == os.path.exists(file_path_prefix):
os.makedirs(file_path_prefix)
print("directory don't not makedirs " + file_path_prefix)
bucket.get_object_to_file(object_name, download_local_save_prefix + local_file)
if __name__ == '__main__':
print("start \n")
auth = oss2.Auth(accesskey_id, accesskey_secret)
bucket = oss2.Bucket(auth, endpoint, bucket_name)
root_directory_list(bucket)
print("end \n")