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 相关文章推荐
python3.4用函数操作mysql5.7数据库
Jun 23 Python
理解Python中的绝对路径和相对路径
Aug 30 Python
python编写Logistic逻辑回归
Dec 30 Python
在python中实现将一张图片剪切成四份的方法
Dec 05 Python
Python 获取主机ip与hostname的方法
Dec 17 Python
python实现对输入的密文加密
Mar 20 Python
Python 读取串口数据,动态绘图的示例
Jul 02 Python
Python 测试框架unittest和pytest的优劣
Sep 26 Python
Python 文本滚动播放器的实现代码
Apr 25 Python
判断Python中的Nonetype类型
May 25 Python
python中字符串String及其常见操作指南(方法、函数)
Apr 06 Python
Python如何让字典保持有序排列
Apr 29 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
PHP代码优化的53个细节
2014/03/03 PHP
ECMall支持SSL连接邮件服务器的配置方法详解
2014/05/19 PHP
从零开始学YII2框架(一)通过Composer安装Yii2框架
2014/08/20 PHP
phalcon框架使用指南
2016/02/23 PHP
php常用数组函数实例小结
2016/12/29 PHP
PHP7变量处理机制修改
2021/03/09 PHP
jquery 常用操作方法
2010/01/28 Javascript
不要在cookie中使用特殊字符的原因分析
2010/07/13 Javascript
Javascript面向对象编程(二) 构造函数的继承
2011/08/28 Javascript
javascript倒计时功能实现代码
2012/06/07 Javascript
xmlhttp缓存清除的2种解决方法
2013/12/13 Javascript
js中判断用户输入的值是否为空的简单实例
2013/12/23 Javascript
基于JQuery实现的Select级联
2014/01/27 Javascript
jquery选择checked在ie8普通模式下的问题
2014/02/12 Javascript
JavaScript和JQuery获取DIV值的方法示例
2017/03/07 Javascript
基于jQuery实现手风琴菜单、层级菜单、置顶菜单、无缝滚动效果
2017/07/20 jQuery
AngularJS 实现购物车全选反选功能
2017/10/24 Javascript
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
vue2使用keep-alive缓存多层列表页的方法
2018/09/21 Javascript
vue+iview 实现可编辑表格的示例代码
2018/10/31 Javascript
微信小程序request请求封装,验签代码实例
2019/12/04 Javascript
vue+ts下对axios的封装实现
2020/02/18 Javascript
从零开始在vue-cli4配置自适应vw布局的实现
2020/06/08 Javascript
JS如何生成动态列表
2020/09/22 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
2020/11/17 Vue.js
python实现k均值算法示例(k均值聚类算法)
2014/03/16 Python
mysql 之通过配置文件链接数据库
2017/08/12 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
HTML5 WebGL 实现民航客机飞行监控系统
2019/07/25 HTML / CSS
应届大学生自荐信
2013/12/05 职场文书
新郎父亲婚宴答谢词
2014/01/11 职场文书
2014年大学团支部工作总结
2014/12/02 职场文书
玄武湖导游词
2015/02/05 职场文书
大学运动会通讯稿
2015/07/18 职场文书
新学期开学寄语2016
2015/12/04 职场文书
Win10系统搭建ftp文件服务器详细教程
2022/08/05 Servers