Python ZIP压缩

ru=lambda x:x.decode(‘u8‘)
rp=lambda x:x.replace(‘\\‘,‘/‘)
gb=lambda x:x.decode(‘gbk‘)
class ZIP:
  def __init__(s):
    import zipfile,ntpath,listdir,appuifw
    s.ZF,s.NP,s.LD,s.A=zipfile.ZipFile,ntpath,listdir,appuifw
    del zipfile,ntpath,listdir,appuifw
    s.list,s.zip=[ru(‘请选择文件‘)],None
    s.oldbody=s.A.app.body
    s.A.app.body=s.LIST=s.A.Listbox(s.list)
    s.menu()
    s.L=s.A.e32.Ao_lock()
    s.A.app.exit_key_handler=s.L.signal
    s.L.wait()
  def run(s,arg,dir,files):
    for i in files:
      if s.NP.isdir(dir):
        if dir[-1]!=dir[2]:dir+=dir[2]
      if s.NP.isfile(dir+i):s.list.append(rp(dir+i))
  def zip_co(s):
    s.path=s.LD.fm(find=‘dir‘)
    s.NP.walk(path,run,‘\n‘)
    ZIP=s.ZF(path+‘1.zip‘,‘w‘,8)
    for i in s.list:
      i=i[len(path):]
      ph=path1.split(‘/‘)[-2]+‘/‘
      print ru(‘正在处理:‘+ph+i)
      try:ZIP.write(path+i,ph+i)
      except:print ‘error‘;break
    ZIP.close()
    print ru(‘操作完成!‘)
  def dezip(s,ph,run):
    w=s.ZF(ph,‘r‘)
    nl=w.namelist()
    for i in nl:run(w,i)
    w.close();return nl
  def zip_de(s):
    def run(w,i):
      s.path=‘e:/cai/‘+i
      r=w.read(i)
      print ru(‘正在处理:‘+i)
      ph=s.NP.split(path)[0]
      if not s.NP.exists(ph):os.makedirs(ph)
      open(path,‘w‘).write(r)
    s.path=s.LD.fm(find=‘file‘,ext=[‘.zip‘])
    s.dezip(s.path,run)
    print ru(‘操作完成!‘)
  def zip_del(s):
    def run(w,i):
      index=s.LIST.current()
      r=w.read(i)
      try:ii=ru(i)
      except:ii=gb(i)
      if ii!=s.nl2[index]:zipf.writestr(w.getinfo(i), r)
    zipf=s.ZF(s.path+‘_1.zip‘,‘w‘)
    s.dezip(s.path,run)
  def zip_open(s):
    s.path=s.LD.fm(find=‘file‘,ext=[‘.zip‘])
    s.zip=s.ZF(s.path)
    try:s.nl2=[ru(i) for i in s.zip.namelist()]
    except:s.nl2=[gb(i) for i in s.zip.namelist()]
    s.LIST.set_list(s.nl2)
    s.menu()
  def menu(s):
    if s.zip:s.A.app.menu=[(ru(‘解压‘),s.zip_de),(ru(‘提取‘),s.zip_de),(ru(‘删除‘),s.zip_del),(ru(‘返回‘),s.__init__)]
    else:s.A.app.menu=[(ru(‘打开‘),s.zip_open),(ru(‘压缩‘),s.zip_co)]
zip=ZIP()
时间: 2024-10-05 04:33:45

Python ZIP压缩的相关文章

python zip压缩文件并设置密码

zip     -P "123" -r  app.zip         app压缩文件 密码 压缩后名称 压缩对象名称 def zipDir(dirpath, outFullName, password=None): """ 压缩指定文件夹 :param dirpath: 目标文件夹路径 :param outFullName: 保存路径+xxxx.zip :return: """ import os if password:

Python - zip压缩模块

# 导入压缩模块 import zipfile # 查看当前模块的功能 # help(zipfile) ''' a.打开冰箱门(创建压缩文件,并且打开) 方法:z = ZipFile(file, mode="r", compression=ZIP_STORED, allowZip64=True) 参数 file:压缩文件的路径 mode="r":设置操作文件的模式 r 读取 w 写入 a 追加模块 x 抑或模式 compression:设置压缩模式 ZIP_STOR

[Python]处理压缩文件

这里讨论使用Python解压如下五种压缩文件: .gz .tar  .tgz .zip .rar 简介 gz: 即gzip,通常只能压缩一个文件.与tar结合起来就可以实现先打包,再压缩. tar: linux系统下的打包工具,只打包,不压缩 tgz:即tar.gz.先用tar打包,然后再用gz压缩得到的文件 zip: 不同于gzip,虽然使用相似的算法,可以打包压缩多个文件,不过分别压缩文件,压缩率低于tar. rar:打包压缩文件,最初用于DOS,基于window操作系统.压缩率比zip高,

java基础---->Zip压缩的使用(转)

java中提供了对压缩格式的数据流的读写.它们封装到现成的IO 类中,以提供压缩功能.下面我们开始java中压缩文件的使用. 目录导航: 关于压缩的简要说明 GZIP压缩文件的使用 ZIP压缩文件的使用 GZIP与ZIP压缩的比较 友情链接 关于压缩的简要说明 一. Java中有着压缩的类: CheckedInputStream GetCheckSum()为任何InputStream 产生校验和(不仅是解压) CheckedOutputStream GetCheckSum()为任何OutputS

Java使用Zip压缩文件或整个目录

1.压缩文件或整个目录 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import java.util.zip.ZipEntry

ZIP压缩格式与RAR压缩格式

早已习惯了安装系统之后必须安装winrar,压缩文件也已经习惯了rar格式,这种习惯的力量真的挺可怕的.在工作中你的同事可能没有安装winrar,或者他们不喜欢安装盗版软件,这时候你给他们发送过去的是rar文件就会给他们造成麻烦.然而新安装的系统不管是XP还是win7都是原生支持ZIP的,所以为了不给他人造成困扰我决定以后一律用ZIP压缩文件. 其实在公司的一些规范里面也应该推广ZIP格式以便大家能更方便的工作.

java基础之zip(压缩、解压)

本程序依赖第三方包Ant.jar.因为java自带的java.utils.zip.ZipOutputStream对一些敏感中文路径会抛出异常. package javax.zip; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.Ou

正确的 zip 压缩与解压代码

网上流传的zip压缩与解压 的代码有很大的问题 虽然使用了ant进行压缩与解压,但是任务的流程还是用的java.util.zip 的方式写的,我在使用的过程中遇到了压缩的目录结构有误,甚至出现不同解压软件显示的目录结构不同的窘境. 下面给出使用org.apache.tools.ant.taskdefs.Zip;和org.apache.tools.ant.taskdefs.Expand 的压缩和解压过程. import java.io.File; import org.apache.tools.a

Xceed Zip压缩和解压控件Xceed Zip Compression Library

Xceed Zip Compression Library 是一个高性能的 Zip 和 Unzip 数据压缩ActiveX控件.通过它,可以创建和操作与Zip文件,也能在内存中直接压缩/解压数据.它设计提供高度灵活性,并且使用快速的多线程 zip 压缩引擎. 具体功能: ActiveX 技术 ATL 3.0编写,简单且独立的 COM 对象和 ActiveX 控件. 无须外部的压缩动态链接库, MFC DLL 或运行库等. 同时有单线程 (STA) 和多线程 (MTA) 模型设计. 不必将组件置于