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 相关文章推荐
Python中变量交换的例子
Aug 25 Python
使用Python的urllib2模块处理url和图片的技巧两则
Feb 18 Python
django输出html内容的实例
May 27 Python
用Python一键搭建Http服务器的方法
Jun 01 Python
解决python3 Pycharm上连接数据库时报错的问题
Dec 03 Python
Python定义函数功能与用法实例详解
Apr 08 Python
PyQt Qt Designer工具的布局管理详解
Aug 07 Python
python协程gevent案例 爬取斗鱼图片过程解析
Aug 27 Python
Python使用Slider组件实现调整曲线参数功能示例
Sep 06 Python
python脚本调用iftop 统计业务应用流量的思路详解
Oct 11 Python
Python实现进度条和时间预估的示例代码
Jun 02 Python
如何导出python安装的所有模块名称和版本号到文件中
Jun 05 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 fsockopen解决办法 php实现多线程
2014/01/20 PHP
php过滤表单提交的html等危险代码
2014/11/03 PHP
基于PHP实现堆排序原理及实例详解
2020/06/19 PHP
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
2011/12/08 Javascript
JavaScript验证图片类型(扩展名)的函数分享
2014/05/05 Javascript
Javascript变量的作用域和作用域链详解
2015/04/02 Javascript
浅谈jQuery为哪般去掉了浏览器检测
2016/08/29 Javascript
canvas实现探照灯效果
2017/02/07 Javascript
JSON与JS对象的区别与对比
2017/03/01 Javascript
基于vue实现分页效果
2017/11/06 Javascript
深入浅析vue组件间事件传递
2017/12/29 Javascript
JS求Number类型数组中最大元素方法
2018/04/08 Javascript
JavaScript实现微信红包算法及问题解决方法
2018/04/26 Javascript
VUE 3D轮播图封装实现方法
2018/07/03 Javascript
VUE v-for循环中每个item节点动态绑定不同函数的实例
2018/09/26 Javascript
vue+echarts实现可拖动节点的折线图(支持拖动方向和上下限的设置)
2019/04/12 Javascript
[01:01:01]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第一场 10.29
2020/10/29 DOTA
python下setuptools的安装详解及No module named setuptools的解决方法
2017/07/06 Python
在python中实现将一张图片剪切成四份的方法
2018/12/05 Python
Pytorch释放显存占用方式
2020/01/13 Python
关于初始种子自动选取的区域生长实例(python+opencv)
2020/01/16 Python
Django+python服务器部署与环境部署教程详解
2020/03/30 Python
Python 实现PS滤镜的旋涡特效
2020/12/03 Python
CSS Grid布局教程之浏览器开启CSS Grid Layout汇总
2014/12/30 HTML / CSS
Clarks鞋法国官方网站:英国其乐鞋品牌
2018/02/11 全球购物
Nike比利时官网:Nike.com (BE)
2019/02/07 全球购物
Myprotein比利时官方网站:欧洲第一运动营养品牌
2020/10/04 全球购物
英语教学随笔感言
2014/02/20 职场文书
英文演讲稿
2014/05/15 职场文书
单位租房协议书样本
2014/10/30 职场文书
预备党员转正意见
2015/06/01 职场文书
清明扫墓感想
2015/08/11 职场文书
《落花生》教学反思
2016/02/16 职场文书
Java方法重载和方法重写的区别到底在哪?
2021/06/11 Java/Android
python中的mysql数据库LIKE操作符详解
2021/07/01 MySQL
从零开始在Centos7上部署SpringBoot项目
2022/04/07 Servers