• ZIP模块--用于压缩多个文件或目录


    import os
    import shutil
    
    
    def copy_and_zip(file_list, dst_folder_name):
       '''
       批量复制文件到指定文件夹,然后把指定文件夹的内容压缩成ZIP并且删掉该文件夹
       :param file_list: 文件或文件夹
       :param dst_folder_name: 目标压缩文件的名称
       :return:
       '''
       source = os.path.join(os.getcwd(), dst_folder_name)
       if os.path.isfile(source+".zip"):
           print('aaa')
           os.remove(source+".zip")  # 删除 dst_folder_name 文件,避免数据重复
       for item in file_list:
           copy_file(item, dst_folder_name)
    
       # 这里我把输出文件的路径选到了程序根目录下
    
       print(source)
       shutil.make_archive(source, "zip", source)
       shutil.rmtree(source) # 删除
    
    
    def copy_file(srcfile, filename):
       '''
       把文件或文件夹复制到指定目录中
       :param srcfile: 文件或者文件夹的绝对路径
       :param filename: 指定目录
       :return:
       '''
       dstfile = os.path.abspath(os.getcwd())
       # 这里我把输出文件的路径选到了程序根目录下
       folder_name = dstfile + os.sep + filename + os.sep
       if not os.path.isfile(srcfile):
           last_name = os.path.basename(srcfile)
           destination_name = folder_name + last_name
           shutil.copytree(srcfile, destination_name)
           print("copy %s -> %s" % (srcfile, destination_name))
       else:
           fpath, fname = os.path.split(folder_name)  # 分离文件名和路径
           if not os.path.exists(fpath):
               os.makedirs(fpath)  # 创建路径
           shutil.copy2(srcfile, folder_name)  # 移动文件
           print("copy %s -> %s" % (srcfile, folder_name))
    
    class ZIP:
       def __init__(self,file_list:list,folder_name):
           copy_and_zip(file_list, folder_name)
    
    
    if __name__ == '__main__':
       # 压缩后文件路径到程序根目录下
       # file_list为字典,可以是多个文件或目录
       file_list = [r"F:Djangoxqyunpandata101.jpg",r"F:Djangoxqyunpandatauild.txt"]
       ZIP(file_list,"dst_folder_name") # 注意:这个压缩后的文件名不要随意更改,否则删除自身文件后自负!!
    
  • 相关阅读:
    window安装maven仓库
    python代码实现将json中所有字段四舍五入保留n位小数
    Centos搭建Git服务器,添加用户名密码实现多用户管理
    python的测试工具大全
    TypeError: cannot serialize '_io.BufferedReader' object 问题记录
    mysql数据库无法插入中文字符
    jquery的相关用法
    js相关用法
    二分法+装饰器(带返回值,无敌参数,批量执行/取消装饰器)
    网络编程三 Socket
  • 原文地址:https://www.cnblogs.com/tyler-bog/p/10896702.html
Copyright © 2020-2023  润新知