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 相关文章推荐
Python2.6版本中实现字典推导 PEP 274(Dict Comprehensions)
Apr 28 Python
Python下载指定页面上图片的方法
May 12 Python
python中import学习备忘笔记
Jan 24 Python
获取Django项目的全部url方法详解
Oct 26 Python
Django视图之ORM数据库查询操作API的实例
Oct 27 Python
django项目运行因中文而乱码报错的几种情况解决
Nov 07 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
Nov 14 Python
python中format()函数的简单使用教程
Mar 14 Python
Python中py文件引用另一个py文件变量的方法
Apr 29 Python
Numpy 将二维图像矩阵转换为一维向量的方法
Jun 05 Python
利用Python复制文件的9种方法总结
Sep 02 Python
python pyenv多版本管理工具的使用
Dec 23 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+MYSQL开发工具及资源收藏
2007/01/02 PHP
PHP连接SQLServer2005 的问题解决方法
2010/07/19 PHP
PHP中限制IP段访问、禁止IP提交表单的代码
2011/04/23 PHP
解析PHP对现有搜索引擎的调用
2013/06/25 PHP
如何取得中文字符串中出现次数最多的子串
2013/08/08 PHP
PHP图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
PHP实现抓取HTTPS内容
2014/12/01 PHP
PHP抓取远程图片(含不带后缀的)教程详解
2016/10/21 PHP
利用PHP实现开心消消乐的算法示例
2017/10/12 PHP
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
浏览器加载、渲染和解析过程黑箱简析
2012/11/29 Javascript
jQuery div层的放大与缩小简单实现代码
2013/03/28 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
2015/01/31 Javascript
js编写选项卡效果
2017/05/23 Javascript
详解nodejs异步I/O和事件循环
2017/06/07 NodeJs
微信小程序授权登录及解密unionId出错的方法
2018/09/26 Javascript
vue中多个倒计时实现代码实例
2019/03/27 Javascript
JS操作字符串转数字的常见方法示例
2019/10/29 Javascript
ES2020 新特性(种草)
2020/01/12 Javascript
微信小程序利用for循环解决内容变更问题
2020/03/05 Javascript
vant组件中 dialog的确认按钮的回调事件操作
2020/11/04 Javascript
[03:11]2014DOTA2国际邀请赛-VG掉入败者组 独家专访357
2014/07/19 DOTA
Python合并字典键值并去除重复元素的实例
2016/12/18 Python
Python列表删除的三种方法代码分享
2017/10/31 Python
Python 中pandas索引切片读取数据缺失数据处理问题
2019/10/09 Python
澳大利亚巧克力花束和礼品网站:Tastebuds
2019/03/15 全球购物
优秀中专生推荐信
2013/11/17 职场文书
办理信用卡工作证明
2014/01/11 职场文书
展会邀请函范文
2014/01/26 职场文书
搞笑征婚广告词
2014/03/17 职场文书
人事经理岗位职责范本
2014/08/04 职场文书
优秀大专毕业生求职信
2014/08/04 职场文书
2014年医务科工作总结
2014/12/18 职场文书
初二学生评语大全
2014/12/26 职场文书
大班上学期个人总结
2015/02/13 职场文书