zoukankan      html  css  js  c++  java
  • python

    import zipfile
    
    # f=zipfile.ZipFile(filename, mode="r", compression=ZIP_STORED, allowZip64=False)
    # filename是一个文件的路径
    # mode  a :追加模式
    # mode  r :只读模式
    # mode  w :写入模式
    # allowZip64:是个bool型变量,当设置为True的时候就是说可以用来创建大小大于2G的zip文件,默认值是True;
    
    # 可判断是否是压缩文件:
    # zipfile.is_zipfile(filename)
    
    # 将多个文件压缩成一个文件.
    # with zipfile.ZipFile('test2.zip', mode='w') as zipf:
    #    zipf.write('a2.txt')
    #    zipf.write('a3.txt')
    #    zipf.write('a4.txt')
    #    zipf.write('a.txt')
    
    
    # 将文件解压到 abc文件内(当前文件下的abc文件)
    # with zipfile.ZipFile('test.zip') as zipf:
    #     zipf.extractall('abc')
    
    # 获取压缩包内的文件名:
    # with zipfile.ZipFile('test.zip','r') as zipf:
    #     for i in zipf.namelist():
    #         print(i)
    
    # 获取压缩包内的文件对象,可查看文件名,大小,mode
    # with zipfile.ZipFile('test.zip','r') as zipf:
    #     for i in zipf.infolist():
    #         print(i)
    # <ZipInfo filename='a2.txt' filemode='-rw-rw-rw-' file_size=43>
    
    # 将zip文件的目录结构打印到stdout上,包括每个文件的path,修改时间和大小
    # with zipfile.ZipFile('test.zip','r') as zipf:
    #     zipf.printdir()
    
    # 打开压缩文件中的一个文件
    # with zipfile.ZipFile('test.zip') as zipf:
    #     info = zipf.open("a.txt",'r')
    # print(info.read())

    四种压缩模式: 

    import zipfile"""ZIP_STORED (no compression), ZIP_DEFLATED (requires zlib),
     | ZIP_BZIP2 (requires bz2) or ZIP_LZMA (requires lzma)."""
    
    # ZIP_STORED
    # with zipfile.ZipFile('a.zip','w',compression=0) as z:
    #     z.write('a1.txt')
    #     z.write('a2.txt')
    #     z.write('a3.txt')
    
    # ZIP_LZMA
    # with zipfile.ZipFile('b.zip','w',compression=zipfile.ZIP_DEFLATED) as z:
    #     z.write('a1.txt')
    #     z.write('a2.txt')
    #     z.write('a3.txt')
    
    # ZIP_BZIP2
    # with zipfile.ZipFile('c.zip','w',compression=zipfile.ZIP_BZIP2) as z:
    #     z.write('a1.txt')
    #     z.write('a2.txt')
    #     z.write('a3.txt')
    
    # ZIP_LZMA
    # with zipfile.ZipFile('d.zip','w',compression=zipfile.ZIP_LZMA) as z:
    #     z.write('a1.txt')
    #     z.write('a2.txt')
    #     z.write('a3.txt')

    压缩效果:

    如何压缩目录以及目录内的文件:

    注意:

      直接压缩文件的目录,那么压缩内只有压缩的目录,却没目录下的文件。

    这里要用到os.walk 文件遍历的方法。

    top -- 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。

    • root 所指的是当前正在遍历的这个文件夹的本身的地址
    • dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
    • files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)
    # with zipfile.ZipFile('CC2.zip','w',compression=zipfile.ZIP_DEFLATED) as z:
    #     for root, dirs, files in os.walk(r".	ext", topdown=False):
    #         for name in files:
    #             print(os.path.join(root, name))
    #             z.write(os.path.join(root, name))
    os.path.join(root, name) 拼接目录下的文件路径,然后传递给zipfile.write方法保存
  • 相关阅读:
    js 各种常用js验证
    js url校验
    最近遇到的技术问题
    a标签的target的四个值
    新系统用到的新知识
    7 天打造前端性能监控系统
    前端必读:浏览器内部工作原理
    怎么判断ThreadPool线程池里的任务都执行完毕
    docker 在window 10 专业版的安装 && .net core 在docker的部署
    .net core 中后台获取前台 数据(post)的方法
  • 原文地址:https://www.cnblogs.com/Anec/p/10171845.html
Copyright © 2011-2022 走看看