查询OSS目录内部文件大小--》写入EXCEL

查询OSS目录内部文件大小–》写入EXCEL

# -*- coding: utf-8 -*-
import oss2
import xlsxwriter


def CalculateFolderLength(bucket, folder):
    length = 0
    for obj in oss2.ObjectIteratorV2(bucket, prefix=folder):
        length += obj.size  #此时单位为Byte
    return length #返回文件大小
# 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
auth = oss2.Auth('yourAccessKeyId', 'yourAccessKeySecret')
# 填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称,例如examplebucket。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')


if __name__ == '__main__':
    workbook = xlsxwriter.Workbook('oss数据集.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, "数据集大小")
    a = 1
    b = 1
    for obj in oss2.ObjectIteratorV2(bucket, delimiter='/'):
        if obj.is_prefix():  # 判断obj为文件夹。
            length = CalculateFolderLength(bucket, obj.key)
            obj.key=obj.key.split("/",2)[0]

            if length/1024<1:#B
                length=str(round(length,2)) + "B."  #原来是Byte,进行了进制转换
            elif length/1024>=1 and length/1024/1024<1:#KB
                length=str(round(length/1024,2)) + "KB."  #原来是Byte,进行了进制转换
            elif length/1024/1024>=1 and length/1024/1024/1024<1:#MB
                length=str(round(length/1024/1024,2)) + "MB." #原来是Byte,进行了进制转换
            elif length/1024/1024/1024>=1:#GB
                length=str(round(length/1024/1024/1024,2)) + "GB."  #原来是Byte,进行了进制转换

            # for i in range(len(list(oss2.ObjectIteratorV2(bucket,delimiter='/')))):
            worksheet.write(a, 0, obj.key)  # 第1列设置值
            worksheet.write(b, 1, length)  # 第2列设置值
            print('directory: ' + obj.key + '  length:'+length)  #原来是Byte,进行了进制转换

            a=a+1
            b=b+1


            # if length/1024<1:#B
            #     print('directory: ' + obj.key + '  length:'+length)  #原来是Byte,进行了进制转换
            # if length/1024>=1 and length/1024/1024<1:#KB
            #     print('directory: ' + obj.key + '  length:' + length)  #原来是Byte,进行了进制转换
            # if length/1024/1024>=1 and length/1024/1024/1024<1:#MB
            #     print('directory: ' + obj.key + '  length:' + length)  #原来是Byte,进行了进制转换
            # if length/1024/1024/1024>=1:#GB
            #     print('directory: ' + obj.key + '  length:' + length)  #原来是Byte,进行了进制转换
        else: # 判断obj为文件。
            if obj.size/1024<1:#B
                print('file:' + obj.key + '  length:' + str(round(obj.size,2)) + "B.")
            if obj.size/1024>=1 and obj.size/1024/1024<1:
                print('file:' + obj.key + '  length:' + str(round(obj.size/1024, 2)) + "KB.")
            if obj.size/1024/1024>=1 and obj.size/1024/1024/1024<1:
                print('file:' + obj.key + '  length:' + str(round(obj.size/1024/1024, 2)) + "MB.")
            if obj.size / 1024 / 1024 /1024>= 1:
                print('file:' + obj.key + '  length:' + str(round(obj.size / 1024 / 1024/1024, 2)) + "GB.")
    workbook.close()




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值