zipfile模块

zipfile模块

压缩包对象. 主要是构建ZipFile类, 关闭, 获取文件ZipInfo, 提取和写入, 设置密码等一些控制压缩包的方法.

  • zipfile.ZipFile(file[, mode[, compression[, allowZip64]]]): 返回压缩包对象. file可以是文件名或对象, mode为’w’, ‘r’, ‘a’三种, 对应写读和追加. compression是压缩模式, ZIP_STORED (只储存不压缩)或 ZIP_DEFLATED, 默认前者, 后者需要zlib模块. allowZip64默认False, True时后缀为zip64, 可以大于2GB.
  • close() 关闭打开的压缩包
  • open(name[,mode[,pwd]]) 打开压缩包内的文件返回类文件对象(ZipExtFile, 只能进行读取). 并不是打开压缩包! name是压缩包内的文件名或ZipInfo对象; mode是’r’,’U’,’rU’, 默认r. pwd当有密码时使用. read(name[,pwd]) 和上类似, 但返回的是字节内容.
  • getinfo(name) 通过文件名返回ZipInfo对象. infolist()返回所有ZipInfo成员的列表. namelist()返回所有ZipInfo成员的名称的列表.
  • extract(member[,path[,pwd]]) 解压一个文件, member是文件名/ZipInfo对象; path解压路径, 默认’.’解压到当前文件夹; pwd是密码. 返回解压文件/文件夹的绝对路径.
  • extractall([path[,members[,pwd]]) 解压所有(部分)文件, 基本同上. members可以指定部分文件名,namelist()的子集.
  • printdir() 输出压缩包内文件信息到屏幕
  • setpassword(pwd) 设置缺省密码, 可以方便解压.
  • testzip() 会检查所有文件, 返回有错的文件的文件名.
  • write(filename[, arcname[, compress_type]]) 将文件写入压缩包. arcname是文件在压缩包里的别名. 类似地writestr(zinfo_or_arcname, bytes[, compress_type]) 写byte串到压缩包.
    import zipfile
    
    # 压缩
    z = zipfile.ZipFile('laxi.zip', 'w')  # 获取一个zip压缩包
    z.write('c1')  # 将文件添加到压缩包
    z.write("c2")  # 将文件添加到压缩包
    z.close()  # 关闭压缩包
    # print(z.namelist())  # 获取压缩包内所有文件的名字
    
    # 解压
    z = zipfile.ZipFile('laxi.zip', 'r')
    print(z.namelist())
    z.extract("c1")  # 解压压缩包内指定的文件,如果文件存在则覆盖,如果不想覆盖则需要添加路径path="..."
    z.extractall()  # 解压整个压缩包,如果文件存在则覆盖,如果不想覆盖则需要添加路径path="..."
    z.close()
    

     

posted @ 2017-03-30 11:18  Grisom  阅读(250)  评论(0编辑  收藏  举报