OSS中所有文件及其大小、第二层文件夹的大小写入Excel

OSS中所有文件及其大小、第二层文件夹的大小写入Excel(还有点瑕疵)

import oss2
import xlsxwriter


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, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')
# ObjectIterator 会列举所有的文件或目录,但每次循环列举100个,可以通过 max_keys 来调整数目,最大值为 1000

a = 1
b = 1
workbook = xlsxwriter.Workbook('Human3.6统计.xlsx')  # 创建一个excel文件
worksheet = workbook.add_worksheet(u'数据集')  # 在文件中创建一个名为TEST的sheet,不加名字默认为sheet1
worksheet.set_column('A:A', 20)  # 设置第一列宽度为20像素
worksheet.set_column('B:B', 20)  # 设置第一列宽度为20像素
worksheet.write(0, 0, "数据集名称")
worksheet.write(0, 1, "数据集大小")


file_list=["file:Kvasir","111"]#第一个输出的/左边部分,之后会替换
file_size=0
for obj in oss2.ObjectIterator(bucket, delimiter=''):
    if obj.is_prefix():  # 文件夹
        # obj.key=obj.key+'/source'
        length = CalculateFolderLength(bucket, obj.key)
        print('directory: ' + obj.key + '  length:' + str(length / 1024) + "KB")
    else: # 文件
        count1=str(obj.key).count('/')
        dataset_name=str(obj.key).split('/',count1)[0]
        dir_name=str(obj.key).split('/',count1)[1]

        if dataset_name!=file_list[0]:
            print("文件夹{}大小".format(file_list[1]),file_list[1],":",file_size/1024)
            worksheet.write(a, 0, str(file_list[0]+'/'+file_list[1]))  # 第1列设置值
            worksheet.write(b, 1, file_size / 1024)  # 第2列设置值
            a = a + 1
            b = b + 1

            file_list[0]=dataset_name
            print("-----------------新的数据集开始了--------------")
            print('file:' + obj.key + '  length:' + str(obj.size / 1024) + "KB")
            file_size=obj.size
        else:
            if file_list[1]!=dir_name:
                print("文件夹{}大小".format(file_list[1]),file_list[1],":",file_size/1024)

                worksheet.write(a, 0, str(file_list[0]+'/'+file_list[1]))  # 第1列设置值
                worksheet.write(b, 1, file_size/1024)  # 第2列设置值
                a = a + 1
                b = b + 1

                file_list[1]=dir_name
                print("##############新的一个目录#################")
                print('file:' + obj.key + '  length:' + str(obj.size / 1024) + "KB")
                file_size=obj.size
            else:
                file_size=file_size+obj.size
                print('file:' + obj.key + '  length:' + str(obj.size / 1024) + "KB")
                worksheet.write(a, 0, str(obj.key) ) # 第1列设置值
                worksheet.write(b, 1, obj.size / 1024)  # 第2列设置值
                a = a + 1
                b = b + 1

print("文件夹{}大小".format(file_list[1]),file_list[1],":",file_size/1024)
worksheet.write(a, 0, str(file_list[0]+'/'+file_list[1]))  # 第1列设置值
worksheet.write(b, 1, file_size/1024)  # 第2列设置值
workbook.close()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值