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杀死一个线程的方法
Sep 06 Python
Python 正则表达式的高级用法
Dec 04 Python
Django框架封装外部函数示例
May 28 Python
python批量图片处理简单示例
Aug 06 Python
python并发编程多进程 互斥锁原理解析
Aug 20 Python
解决Python图形界面中设置尺寸的问题
Mar 05 Python
Pycharm IDE的安装和使用教程详解
Apr 30 Python
Python中socket网络通信是干嘛的
May 27 Python
浅谈pandas dataframe对除数是零的处理
Jul 20 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
Feb 22 Python
Python离线安装openpyxl模块的步骤
Mar 30 Python
Matplotlib可视化之添加让统计图变得简单易懂的注释
Jun 11 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 验证码的实现代码
2011/07/17 PHP
MySQL的FIND_IN_SET函数使用方法分享
2012/03/27 PHP
Laravel 4.2 中队列服务(queue)使用感受
2014/10/30 PHP
php封装的smarty类完整实例
2016/10/19 PHP
golang、python、php、c++、c、java、Nodejs性能对比
2017/03/12 NodeJs
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
php提取微信账单的有效信息
2018/10/01 PHP
Laravel框架实现简单的学生信息管理平台案例
2019/05/07 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
2019/08/03 PHP
在textarea中显示html页面的javascript代码
2007/04/20 Javascript
javascript replace方法与正则表达式
2008/02/19 Javascript
JavaScript中原型和原型链详解
2015/02/11 Javascript
JavaScript中DOM详解
2015/04/13 Javascript
jquery自定义插件开发之window的实现过程
2016/05/06 Javascript
Angular.js中ng-if、ng-show和ng-hide的区别介绍
2017/01/20 Javascript
javascript中的replace函数(带注释demo)
2018/01/07 Javascript
vue文件树组件使用详解
2018/03/29 Javascript
浅谈vue项目如何打包扔向服务器
2018/05/08 Javascript
9102年webpack4搭建vue项目的方法步骤
2019/02/20 Javascript
Vue + Elementui实现多标签页共存的方法
2019/06/12 Javascript
vue多页面项目中路由使用history模式的方法
2019/09/23 Javascript
Python学习小技巧之列表项的排序
2017/05/20 Python
python的pytest框架之命令行参数详解(上)
2019/06/27 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
2019/08/31 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
2020/06/15 Python
scrapy-splash简单使用详解
2021/02/21 Python
在css3中background-clip属性与background-origin属性的用法介绍
2012/11/13 HTML / CSS
印度领先的在线时尚商店:Koovs
2016/08/28 全球购物
护士实习生自我鉴定范文
2013/12/10 职场文书
个人欠款担保书
2014/05/20 职场文书
化学工程专业求职信
2014/08/10 职场文书
2014国庆节国旗下演讲稿(精选版)
2014/09/26 职场文书
Python进程间的通信之语法学习
2022/04/11 Python
html中相对位置与绝对位置的具体使用
2022/05/15 HTML / CSS