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


文章目录

  • 解压所有压缩包到同一个文件夹
  • 背景描述
  • 批量压缩完整代码
  • 解压完整代码
  • 清空目标文件夹
  • 引入库文件
  • 定义解压函数
  • 定义源路径和目标路径
  • 选择zip格式的压缩包
  • 批量解压压缩包
  • 最终结果


背景描述

由于服务器存在限制,一次只能上传小于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张图片。

python如何将压缩文件解压并重命名到文件夹_hive