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版
Dec 07 Python
python实现域名系统(DNS)正向查询的方法
Apr 19 Python
Python合并字典键值并去除重复元素的实例
Dec 18 Python
Python中pow()和math.pow()函数用法示例
Feb 11 Python
Python smtplib实现发送邮件功能
May 22 Python
对python中if语句的真假判断实例详解
Feb 18 Python
python障碍式期权定价公式
Jul 19 Python
python pandas cumsum求累计次数的用法
Jul 29 Python
Django实现auth模块下的登录注册与注销功能
Oct 10 Python
Pycharm最新激活码2019(推荐)
Dec 31 Python
python ffmpeg任意提取视频帧的方法
Feb 21 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
Jun 10 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
兼容PHP5的PHP目录管理函数库
2008/07/10 PHP
PHP文件生成的图片无法使用CDN缓存的解决方法
2015/06/20 PHP
解决php-fpm.service not found问题的办法
2017/06/06 PHP
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
laravel 5.3 单用户登录简单实现方法
2019/10/14 PHP
Javascript下IE与Firefox下的差异兼容写法总结
2010/06/18 Javascript
如何将JS的变量值传递给ASP变量
2012/12/10 Javascript
JavaScript不刷新实现浏览器的前进后退功能
2014/11/05 Javascript
关于编写性能高效的javascript事件的技术
2014/11/28 Javascript
jQuery中:eq()选择器用法实例
2014/12/29 Javascript
实现placeholder效果的方案汇总
2015/06/11 Javascript
JS实现可调整倒计时间代码分享
2015/08/18 Javascript
jQuery和CSS仿京东仿淘宝列表导航菜单
2017/01/04 Javascript
JS验证全角与半角及相互转化的介绍
2017/05/18 Javascript
Angular.JS中select下拉框设置value的方法
2017/06/20 Javascript
基于vue-cli配置lib-flexible + rem实现移动端自适应
2017/12/26 Javascript
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
2018/01/18 jQuery
javascript闭包的使用之按钮切换功能
2018/08/30 Javascript
Vuex的actions属性的具体使用
2019/04/14 Javascript
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
2020/05/13 Javascript
js验证账户名是否重复
2020/05/26 Javascript
Python2.x版本中maketrans()方法的使用介绍
2015/05/19 Python
Python正则获取、过滤或者替换HTML标签的方法
2016/01/28 Python
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
python树莓派红外反射传感器
2019/01/21 Python
python 日期排序的实例代码
2019/07/11 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
Python3自定义http/https请求拦截mitmproxy脚本实例
2020/05/11 Python
10分钟理解CSS3 Grid布局
2018/12/20 HTML / CSS
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
学校清明节活动总结
2014/07/04 职场文书
2014年教师思想工作总结
2014/12/03 职场文书
思想政治表现评语
2015/01/04 职场文书
七年级上册语文教学计划
2015/01/22 职场文书
SpringBoot系列之MongoDB Aggregations用法详解
2022/02/12 MongoDB
使用Apache Camel表达REST服务的方法
2022/06/10 Servers