多层多路径子文件夹批量解压压缩包到指定目录(以B2Z格式压缩包为例)

下载了个层级特别多的压缩包,命名为Apr,Apr下面有30个文件夹,代表30天,每个文件夹下有24个文件夹,代表24个小时,每个小时文件夹下有60个压缩包,代表60分钟,累计43200个压缩包,人工解压太费时间,因此写了个代码批量解压。文件路径有多层,Apr/01/01/00.json.b2z代表4月1日01点00分的数据。

我把所有解压的文件都另存到新的文件夹,如Apr/01/01所有子文件夹下的压缩包(从Apr/01/01/00.json.b2z到Apr/01/01/59.json.b2z)都解压到April/01/01中,名称不变,即Apr/01/01/00.json.b2z解压后为Apr/01/01/00.json,大家可以根据自己的需要解压到文件夹或者其他格式文件中。

import os
import bz2  #这里可以自行替换为需要的解压工具,比如zipfile等等

path = 'D:\data\Apr'
un_path = 'D:\data\April\\'
for (dirpath, dirnames, files) in os.walk(path):  #遍历主文件夹下所有压缩包
    for filename in files:
        filepath = os.path.join(dirpath, filename) #压缩包路径,例如D:\data\Apr\01\01\00.json.b2z
        newfilepath = un_path + filepath[-17:-4]  #压缩包存储名,例如D:\data\April\01\01\00.json
        pathdir = newfilepath[:-8] #压缩包存储路径,例如D:\data\April\01\01
        if not os.path.exists(pathdir):
            os.makedirs(pathdir)  #如果不存在路径则新建
        new_file = open(newfilepath, 'wb')
        file = bz2.BZ2File(filepath, 'rb') #解压
        for data in iter(lambda: file.read(100 * 1024), b''):
            new_file.write(data)  #写入
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值