python 批量解压压缩文件的实例代码


Posted in Python onJune 27, 2019

下面给大家介绍python 批量解压压缩文件的实例代码,代码如下所述;

#/usr/bin/python#coding=utf-8import os,sys 
import zipfile open_path='e:\\data'save_path='e:\\data' os.chdir(open_path)
#转到路径
#首先,通过zipfile模块打开指定位置zip文件
#传入文件名列表,及列表文件所在路径,及存储路径def Decompression(files,file_path,save_path):  
os.getcwd()#当前路径  os.chdir(file_path)#转到路径  
for file_name in files:   
print(file_name)   
r = zipfile.is_zipfile(file_name)#判断是否解压文件   
if r:      
zpfd = zipfile.ZipFile(file_name)#读取压缩文件     
os.chdir(save_path)#转到存储路径      
zpfd.extractall()      
zpfd.close()def files_save(open_path): 
for file_path,sub_dirs,files in os.walk(open_path):#获取所有文件名,路径   
print(file_path,sub_dirs,files)   
Decompression(files,file_path,save_path)files_save(open_path)

在看下一段代码python批量解压

#!/usr/bin/python
# -*- coding: UTF-8 -*-
'''Created on Jun 6, 2019
@author: carson
'''
import os
import re
import zipfile
import StringIO
# 下述三行是为了解决编码问题
import sys
reload(sys)
sys.setdefaultencoding('utf8')
file_path = r'/Users/qcq/Downloads/bills'
file_out = r'/Users/qcq/Downloads/qcq.txt'
# 正则表达式匹配基本话费,信息费,长途费,三个条目。
pattern = re.compile(r'\d+\.\d+')
phone_number_line = 1 #标记文件的第一行是电话号码行
real_bill_line = 7 # 正文开始
'''
1. 代码第一部分,首先迭代给定的文件目录,取得需要处理的zip文件,存储在一个列表里面,为后边的文件处理服务。此处主要是使用os.walk来迭代目录,然后使用os.path.join连接两个目录。
'''
file_name_list = []
for dirpath, dirnames, filenames in os.walk(file_path):
  for file_name in filenames:
    if file_name.endswith('.zip'):
      temp_path = os.path.join(dirpath, file_name)
      file_name_list.append(temp_path)
'''
2. 对获取到的上述文件,进行了排序使输出的顺序有序。
'''      
sorted(file_name_list)
'''
3. 正文部分
'''
with open(file_out, 'w') as f_out:
  for zip_file in file_name_list:
    with zipfile.ZipFile(zip_file) as f:
      data = {}
      for nameOfFileUnderZip in f.namelist():
        count = 1
        contents = StringIO.StringIO(f.read(nameOfFileUnderZip))
        sum_all = 0.0
        for line in contents:
          if count > phone_number_line and count < real_bill_line:
            count += 1
            continue
          if phone_number_line == count:
            phone_number = line.split(u':')[1]
            count += 1
            continue
          sum_all += sum(map(float, pattern.findall(line)))
        data[phone_number.strip()]=sum_all
      f_out.write(zip_file + '\n')
      for key, value in sorted(data.items(), key=lambda d:d[0]) :
        f_out.write(key + ':' + str(value) + '\n')

##############################################################################
#coding=utf-8
#甄码农python代码
#使用zipfile做目录压缩,解压缩功能
import os,os.path
import zipfile
def zip_dir(dirname,zipfilename):
  filelist = []
  if os.path.isfile(dirname):
    filelist.append(dirname)
  else :
    for root, dirs, files in os.walk(dirname):
      for name in files:
        filelist.append(os.path.join(root, name))
  zf = zipfile.ZipFile(zipfilename, "w", zipfile.zlib.DEFLATED)
  for tar in filelist:
    arcname = tar[len(dirname):]
    #print arcname
    zf.write(tar,arcname)
  zf.close()
def unzip_file(zipfilename, unziptodir):
  if not os.path.exists(unziptodir): os.mkdir(unziptodir, 0777)
  zfobj = zipfile.ZipFile(zipfilename)
  for name in zfobj.namelist():
    name = name.replace('\\','/')
    if name.endswith('/'):
      os.mkdir(os.path.join(unziptodir, name))
    else:      
      ext_filename = os.path.join(unziptodir, name)
      ext_dir= os.path.dirname(ext_filename)
      if not os.path.exists(ext_dir) : os.mkdir(ext_dir,0777)
      outfile = open(ext_filename, 'wb')
      outfile.write(zfobj.read(name))
      outfile.close()
if __name__ == '__main__':
  zip_dir(r'E:/python/learning',r'E:/python/learning/zip.zip')
  unzip_file(r'E:/python/learning/zip.zip',r'E:/python/learning2')

总结

以上所述是小编给大家介绍的python 批量解压压缩文件的实例代码,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Python 相关文章推荐
用smtplib和email封装python发送邮件模块类分享
Feb 17 Python
Python中input和raw_input的一点区别
Oct 21 Python
Python的SQLAlchemy框架使用入门
Apr 29 Python
CentOS 7下安装Python 3.5并与Python2.7兼容并存详解
Jul 07 Python
python学习必备知识汇总
Sep 08 Python
用python统计代码行的示例(包括空行和注释)
Jul 24 Python
对Python3使运行暂停的方法详解
Feb 18 Python
PyTorch的深度学习入门教程之构建神经网络
Jun 27 Python
如何通过Django使用本地css/js文件
Jan 20 Python
Python如何读写CSV文件
Aug 13 Python
Pycharm同步远程服务器调试的方法步骤
Nov 04 Python
基于tensorflow权重文件的解读
May 26 Python
python opencv 图像拼接的实现方法
Jun 27 #Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
Jun 27 #Python
Pandas中Series和DataFrame的索引实现
Jun 27 #Python
Python中使用双下划线防止类属性被覆盖问题
Jun 27 #Python
PyTorch的深度学习入门教程之构建神经网络
Jun 27 #Python
PyTorch的深度学习入门之PyTorch安装和配置
Jun 27 #Python
解决pycharm remote deployment 配置的问题
Jun 27 #Python
You might like
php.ini 中文版
2006/10/28 PHP
mysql 的 like 问题,超强毕杀记!!!
2007/01/18 PHP
PHP5 面向对象程序设计
2008/02/13 PHP
php中url函数介绍及使用示例
2014/02/13 PHP
Laravel 5 框架入门(二)构建 Pages 的管理功能
2015/04/09 PHP
CI(CodeIgniter)模型用法实例分析
2016/01/20 PHP
ThinkPHP连接Oracle数据库
2016/04/22 PHP
Js点击弹出下拉菜单效果实例
2013/08/12 Javascript
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
2013/08/15 Javascript
jquery动态更换设置背景图的方法
2014/03/25 Javascript
jQuery中:nth-child选择器用法实例
2014/12/31 Javascript
JavaScript实现点击按钮就复制当前网址
2015/12/14 Javascript
AngularJS入门教程之表格实例详解
2016/07/27 Javascript
微信开发 使用picker封装省市区三级联动模板
2016/10/28 Javascript
JS获取短信验证码倒计时的实现代码
2017/05/22 Javascript
分享19个JavaScript 有用的简写写法
2017/07/07 Javascript
详谈js对url进行编码和解码(三种方式的区别)
2017/08/16 Javascript
JS继承与闭包及JS实现继承的三种方式
2017/10/15 Javascript
浅谈vue项目4rs vue-router上线后history模式遇到的坑
2018/09/27 Javascript
JavaScript实现小球沿正弦曲线运动
2020/09/07 Javascript
Vue基于localStorage存储信息代码实例
2020/11/16 Javascript
[11:57]《一刀刀一天》第十七期:TI中国军团加油!
2014/05/26 DOTA
利用python提取wav文件的mfcc方法
2019/01/09 Python
Python笔记之工厂模式
2019/11/20 Python
Python实现UDP程序通信过程图解
2020/05/15 Python
python简单实现9宫格图片实例
2020/09/03 Python
品学兼优的大学生自我评价
2013/09/20 职场文书
函授毕业生自我鉴定
2013/11/06 职场文书
绿色城市实施方案
2014/03/19 职场文书
竞选学习委员演讲稿
2014/09/01 职场文书
食品安全演讲稿
2014/09/01 职场文书
办护照工作证明
2014/10/01 职场文书
财产分割协议书范本
2014/11/03 职场文书
2016护理专业求职自荐书
2016/01/28 职场文书
vue中div禁止点击事件的实现
2022/04/02 Vue.js