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 相关文章推荐
pymongo实现多结果进行多列排序的方法
May 16 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
Apr 11 Python
python中defaultdict的用法详解
Jun 07 Python
python读取tif图片时保留其16bit的编码格式实例
Jan 13 Python
使用Puppeteer爬取微信文章的实现
Feb 11 Python
Jupyter Notebook 实现正常显示中文和负号
Apr 24 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
May 08 Python
Pycharm如何导入python文件及解决报错问题
May 10 Python
Python实现画图软件功能方法详解
Jul 28 Python
Python如何给函数库增加日志功能
Aug 04 Python
用Python提取PDF表格的方法
Apr 11 Python
Python绘制分类图的方法
Apr 20 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数据库配置文件一般做法分享
2012/07/07 PHP
php获得文件夹下所有文件的递归算法的简单实例
2016/11/01 PHP
php使用curl实现简单模拟提交表单功能
2017/05/15 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
javascript+mapbar实现地图定位
2010/04/09 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
jquery和雅虎的yql服务实现天气预报服务示例
2014/02/08 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
2014/11/23 Javascript
js查看一个函数的执行时间实例代码
2015/09/12 Javascript
laypage分页控件使用实例详解
2016/05/19 Javascript
微信小程序 POST请求(网络请求)详解及实例代码
2016/11/16 Javascript
微信小程序 底部导航栏目开发资料
2016/12/05 Javascript
node.js 抓取代理ip实例代码
2017/04/30 Javascript
javascript实现二叉树遍历的代码
2017/06/08 Javascript
js中json对象和字符串的理解及相互转化操作实现方法
2017/09/22 Javascript
详解VUE自定义组件中用.sync修饰符与v-model的区别
2018/06/26 Javascript
Vue实现购物小球抛物线的方法实例
2020/11/22 Vue.js
[00:35]DOTA2上海特级锦标赛 VP战队宣传片
2016/03/04 DOTA
使用Python构建Hopfield网络的教程
2015/04/14 Python
讲解Python中运算符使用时的优先级
2015/05/14 Python
解读! Python在人工智能中的作用
2017/11/14 Python
Python:Scrapy框架中Item Pipeline组件使用详解
2017/12/27 Python
python虚拟环境的安装和配置(virtualenv,virtualenvwrapper)
2019/08/09 Python
django实现web接口 python3模拟Post请求方式
2019/11/19 Python
如何使用pandas读取txt文件中指定的列(有无标题)
2020/03/05 Python
在django项目中导出数据到excel文件并实现下载的功能
2020/03/13 Python
localStorage 设置过期时间的方法实现
2018/12/21 HTML / CSS
什么是Assembly(程序集)
2014/09/14 面试题
消防器材管理制度
2014/01/28 职场文书
前台文员职责范本
2014/03/07 职场文书
洗发水广告词
2014/03/13 职场文书
2014年教研活动总结范文
2014/04/26 职场文书
2015财务年度工作总结范文
2015/05/04 职场文书
postgresql使用filter进行多维度聚合的解决方法
2021/07/16 PostgreSQL
Django模型层实现多表关系创建和多表操作
2021/07/21 Python