Python解压 rar、zip、tar文件的方法


Posted in Python onNovember 19, 2019

Q1 :如何解压 rar 压缩包文件?

A :

  • Step1:检查是否有 rarfile 第三方库,若没有该模块,则需要进行安装 ;
  • Step2:参考代码如下:
import rarfile
import os
rar=rarfile.RarFile(filename, mode='r') # mode的值只能为'r'
# 判断同名文件夹是否存在,若不存在则创建同名文件夹
if os.path.isdir(os.path.splitext(filename)[0]):
 rf_list = rf.namelist() # 得到压缩包里所有的文件 
 print('rar文件内容', rf_list) 
else:
 os.mkdir(os.path.splitext(filename)[0])
rar.extractall(os.path.splitext(filename)[0]) # 解压文件
rar.close() # 关闭文件,必须有,释放内存

Q2 :如何解压 zip 压缩包文件?

A:

可以使用RPA设计器自带的【zip 解压】组件,编写代码,则可以参考如下(注意检查是否 zipfile 第三方库,设计器自带,可直接调用):

import zipfile
import os
zip_file = zipfile.ZipFile(filename)
if os.path.isdir(os.path.splitext(filename)[0]):
 zip_list = zip_file.namelist() # 得到压缩包里所有文件 
 print('zip文件内容', zip_list) 
else:
 os.mkdir(os.path.splitext(filename)[0])
for f in zip_list:
 zip_file.extract(f, os.path.splitext(filename)[0]) # 循环解压文件到指定目录
zip_file.close()

Q3 :如何解压 tar 打包文件?

A:

注意是否安装 tarfile 第三方库,RPA设计器自带,可直接调用:

import tarfile
import os

tar = tarfile.open(filename, mode = "r:gz") #"r:gz"表示 open for reading with gzip compression
tar.extractall(path=os.path.splitext(filename)[0]) # 将tar.gz文件解压到temp文件夹下
tar.close()

补充:python解压文件、压缩文件

一、文件解压

文件解压源码如下:其中入参为zip包文件目录,出参为解压后文件夹目录,如输入 /tmp/1.zip,返回 /tmp/1/

import os
import zipfile
def unzip_resource(zip_path):
  file_name = os.path.basename(zip_path)
  file_dir = os.path.dirname(zip_path)
  if os.path.splitext(zip_path)[1] == '.zip':
    file_zip = zipfile.ZipFile(zip_path, 'r')
    for resource_file in file_zip.namelist():
      file_zip.extract(resource_file, file_dir + '/' + file_name.replace('.zip', ''))
  file_path = zip_path.replace('.zip', '')
  resource_path = file_path + '/'
  return resource_path

二、文件夹打包压缩

文件夹打包源码如下:其中入参为文件夹名称以及压缩后文件的名字

import os
import zipfile
def abcZip(dir_path, file_name):
  with zipfile.ZipFile(file_name, 'w', zipfile.ZIP_DEFLATED) as target:
    for dirpath, dirnames, filenames in os.walk(dir_path):
      fpath = dirpath.replace(dir_path, '')
      fpath = fpath and fpath + os.sep or ''
      for filename in filenames:
        # file_list.append(os.path.join(dirpath,filename))
        # print(os.path.join(dirpath,filename)
        if (filename.__contains__('.DS_Store')):
          continue
        target.write(os.path.join(dirpath, filename), fpath + filename)
  target.close()

总结

以上所述是小编给大家介绍的Python解压 rar、zip、tar文件的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python中Collection的使用小技巧
Aug 18 Python
Django应用程序中如何发送电子邮件详解
Feb 04 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
May 25 Python
答题辅助python代码实现
Jan 16 Python
python使用opencv按一定间隔截取视频帧
Mar 06 Python
Python实现模拟登录网易邮箱的方法示例
Jul 05 Python
对python判断是否回文数的实例详解
Feb 08 Python
Python操作配置文件ini的三种方法讲解
Feb 22 Python
Python输出指定字符串的方法
Feb 06 Python
Python绘制全球疫情变化地图的实例代码
Apr 20 Python
Python基于Faker假数据构造库
Nov 30 Python
Python Matplotlib绘制两个Y轴图像
Apr 13 Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
Nov 19 #Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
Nov 19 #Python
python flask搭建web应用教程
Nov 19 #Python
在Python中使用MySQL--PyMySQL的基本使用方法
Nov 19 #Python
Python可变参数会自动填充前面的默认同名参数实例
Nov 18 #Python
python tornado修改log输出方式
Nov 18 #Python
Python3常用内置方法代码实例
Nov 18 #Python
You might like
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
2014/05/15 PHP
php转换颜色为其反色的方法
2015/04/27 PHP
smarty循环嵌套用法示例分析
2016/07/19 PHP
PHP实现生成推广海报的方法详解
2018/03/14 PHP
PHP实现图片压缩
2020/09/09 PHP
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
2019/09/08 PHP
location.href 在IE6中不跳转的解决方法与推荐使用代码
2010/07/08 Javascript
Javascript实现视频轮播在pc端与移动端均可
2013/09/29 Javascript
javascript框架设计之种子模块
2015/06/23 Javascript
chrome下判断点击input上标签还是其余标签的实现方法
2016/09/18 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
2017/03/09 Javascript
JS ES6中setTimeout函数的执行上下文示例
2017/04/27 Javascript
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
nodejs操作mysql实现增删改查的实例
2017/05/28 NodeJs
jquery tmpl模板(实例讲解)
2017/09/02 jQuery
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
Vue2仿淘宝实现省市区三级联动
2020/04/15 Javascript
解决vue 按钮多次点击重复提交数据问题
2018/05/10 Javascript
微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
2018/10/09 Javascript
详解用vue2.x版本+adminLTE开源框架搭建后台应用模版
2019/03/15 Javascript
微信小程序new Date()方法失效问题解决方法
2019/07/29 Javascript
vue3.0 的 Composition API 的使用示例
2020/10/26 Javascript
nodejs中的异步编程知识点详解
2021/01/17 NodeJs
Python实现二分查找算法实例
2015/05/26 Python
python通过opencv实现批量剪切图片
2017/11/13 Python
python读取指定字节长度的文本方法
2019/08/27 Python
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
2020/09/16 Python
CSS3教程:background-clip和background-origin
2008/10/17 HTML / CSS
大学毕业生个人自荐信范文
2014/01/08 职场文书
学习决心书范文
2014/03/11 职场文书
大学同学会活动方案
2014/08/20 职场文书
财务管理专业自荐书
2014/09/02 职场文书
2014年乡镇纪委工作总结
2014/12/19 职场文书
学校安全管理制度
2015/08/06 职场文书
个人落户申请书怎么写?
2019/06/28 职场文书
JavaGUI模仿QQ聊天功能完整版
2021/07/04 Java/Android