Chinaunix

标题: Python压缩文件夹/解压缩zip文件 [打印本页]

作者: usli    时间: 2015-07-03 10:53
标题: Python压缩文件夹/解压缩zip文件
使用python自带的zipfile模块做压缩文件夹/解压缩zip文件功能

[Python]代码
  1. #coding=utf-8
  2. #甄码农python代码
  3. #使用zipfile做目录压缩,解压缩功能

  4. import os,os.path
  5. import zipfile

  6. def zip_dir(dirname,zipfilename):
  7.     filelist = []
  8.     if os.path.isfile(dirname):
  9.         filelist.append(dirname)
  10.     else :
  11.         for root, dirs, files in os.walk(dirname):
  12.             for name in files:
  13.                 filelist.append(os.path.join(root, name))
  14.          
  15.     zf = zipfile.ZipFile(zipfilename, "w", zipfile.zlib.DEFLATED)
  16.     for tar in filelist:
  17.         arcname = tar[len(dirname):]
  18.         #print arcname
  19.         zf.write(tar,arcname)
  20.     zf.close()


  21. def unzip_file(zipfilename, unziptodir):
  22.     if not os.path.exists(unziptodir): os.mkdir(unziptodir, 0777)
  23.     zfobj = zipfile.ZipFile(zipfilename)
  24.     for name in zfobj.namelist():
  25.         name = name.replace('\\','/')
  26.         
  27.         if name.endswith('/'):
  28.             os.mkdir(os.path.join(unziptodir, name))
  29.         else:            
  30.             ext_filename = os.path.join(unziptodir, name)
  31.             ext_dir= os.path.dirname(ext_filename)
  32.             if not os.path.exists(ext_dir) : os.mkdir(ext_dir,0777)
  33.             outfile = open(ext_filename, 'wb')
  34.             outfile.write(zfobj.read(name))
  35.             outfile.close()

  36. if __name__ == '__main__':
  37.     zip_dir(r'E:/python/learning',r'E:/python/learning/zip.zip')
  38.     unzip_file(r'E:/python/learning/zip.zip',r'E:/python/learning2')
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2