Python解压所有压缩包到同一文件夹下

解压所有压缩包到同一个文件夹

背景描述

​ 由于服务器存在限制,一次只能上传小于100Mb的文件,我的数据集大小有1.5G左右,所以我将该数据集分割为30份,每份大约50MB,上传到云端,然后进行批量解压

批量压缩完整代码

import os
import zipfile


# 多文件压缩
def zip_files(files, zip_name):  # files=['./a.jpg', ./b.jpg]  可以把多个文件压缩成一个包
    zip = zipfile.ZipFile(zip_name, 'w', zipfile.ZIP_DEFLATED)
    for file in files:
        print('compressing', file)
        zip.write(file)
    zip.close()
    print('压缩完成!')


files_dir = './src/'

files = ["./src/" + i for i in os.listdir(files_dir)]
print(len(files))
for i in range(30):
    temp_files = files[i * 500: (i+1) * 500]
    zip_name = 'src %d' % (i + 1) + ".zip"
    zip_files(temp_files, zip_name)
    print("已压缩%d" % ((i+1) * 500) + "个文件")

解压完整代码

清空目标文件夹

import os
tops = ["./segnet_train/src/"]
for top in tops:
    if not os.path.exists(top):
        os.makedirs(top)
    for root, dirs, files in os.walk(top, topdown=False):
        for name in files:
            os.remove(os.path.join(root, name))
        for name in dirs:
            os.rmdir(os.path.join(root, name))
            
print("已建立文件夹实例")
已建立文件夹实例

引入库文件

import zipfile
import os
# 将zip文件解压处理,并放到指定的文件夹里面去

定义解压函数

# zip_file_name:"src 03.zip" det_path:"./segnet_train/src/"
def unzip_file(zip_file_name,destination_path):
    archive = zipfile.ZipFile(zip_file_name,mode='r')
    for file in archive.namelist():
        archive.extract(file, destination_path)

定义源路径和目标路径

zip_path = './seg_train/'
destinate_path = './segnet_train/'

选择zip格式的压缩包

format_ = ["zip", 'rar', '7z']
files = [i for i in os.listdir(zip_path) if i.split(".")[-1] in format_]
len(files)

这里最终得到了30个压缩包的文件名,我们可以将文件名称打印出来进行检查

# 打印压缩包名
files.sort(reverse=False)
print(files)
['src 1.zip', 'src 10.zip', 'src 11.zip', 'src 12.zip', 'src 13.zip', 'src 14.zip', 'src 15.zip', 'src 16.zip', 'src 17.zip', 'src 18.zip', 'src 19.zip', 'src 2.zip', 'src 20.zip', 'src 21.zip', 'src 22.zip', 'src 23.zip', 'src 24.zip', 'src 25.zip', 'src 26.zip', 'src 27.zip', 'src 28.zip', 'src 29.zip', 'src 3.zip', 'src 30.zip', 'src 4.zip', 'src 5.zip', 'src 6.zip', 'src 7.zip', 'src 8.zip', 'src 9.zip']

批量解压压缩包

for file in files:
    zip_file_name = zip_path + file
    destination_path = destinate_path
    unzip_file(zip_file_name,destination_path)
    print("已解压压缩包" + file + "并删除压缩包")
    os.remove(zip_file_name)
已解压压缩包src 1.zip并删除压缩包
已解压压缩包src 10.zip并删除压缩包
已解压压缩包src 11.zip并删除压缩包
已解压压缩包src 12.zip并删除压缩包
已解压压缩包src 13.zip并删除压缩包
已解压压缩包src 14.zip并删除压缩包
已解压压缩包src 15.zip并删除压缩包
已解压压缩包src 16.zip并删除压缩包
已解压压缩包src 17.zip并删除压缩包
已解压压缩包src 18.zip并删除压缩包
已解压压缩包src 19.zip并删除压缩包
已解压压缩包src 2.zip并删除压缩包
已解压压缩包src 20.zip并删除压缩包
已解压压缩包src 21.zip并删除压缩包
已解压压缩包src 22.zip并删除压缩包
已解压压缩包src 23.zip并删除压缩包
已解压压缩包src 24.zip并删除压缩包
已解压压缩包src 25.zip并删除压缩包
已解压压缩包src 26.zip并删除压缩包
已解压压缩包src 27.zip并删除压缩包
已解压压缩包src 28.zip并删除压缩包
已解压压缩包src 29.zip并删除压缩包
已解压压缩包src 3.zip并删除压缩包
已解压压缩包src 30.zip并删除压缩包
已解压压缩包src 4.zip并删除压缩包
已解压压缩包src 5.zip并删除压缩包
已解压压缩包src 6.zip并删除压缩包
已解压压缩包src 7.zip并删除压缩包
已解压压缩包src 8.zip并删除压缩包
已解压压缩包src 9.zip并删除压缩包

最终结果

​ 将30个压缩包内的文件全部解压到一个文件夹下,显示有15000张图片。

image-20210318215345071

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小凡爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值