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中查找excel某一列的重复数据 剔除之后打印
Feb 10 Python
python实现将汉字转换成汉语拼音的库
May 05 Python
Golang与python线程详解及简单实例
Apr 27 Python
Python面向对象编程之继承与多态详解
Jan 16 Python
Python线性方程组求解运算示例
Jan 17 Python
Python使用matplotlib实现的图像读取、切割裁剪功能示例
Apr 28 Python
python 按照固定长度分割字符串的方法小结
Apr 30 Python
python 字典 按key值大小 倒序取值的实例
Jul 06 Python
python3利用venv配置虚拟环境及过程中的小问题小结
Aug 01 Python
Python UnboundLocalError和NameError错误根源案例解析
Oct 31 Python
浅谈Python中os模块及shutil模块的常规操作
Apr 03 Python
python如何判断IP地址合法性
Apr 05 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
如何选购合适的收音机
2021/03/01 无线电
php注入实例
2006/10/09 PHP
关于PHP5 Session生命周期介绍
2010/03/02 PHP
php判断文件夹是否存在不存在则创建
2015/04/09 PHP
微信公众平台开发教程②微信端分享功能图文详解
2019/04/10 PHP
如何用javascript去掉字符串里的所有空格
2007/02/08 Javascript
JavaScript更改class和id的方法
2008/10/10 Javascript
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
2011/06/27 Javascript
jquery 选项卡效果 新手代码
2011/07/08 Javascript
Extjs中通过Tree加载右侧TabPanel具体实现
2013/05/05 Javascript
js实现的复制兼容chrome和IE
2014/04/03 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
2015/06/05 Javascript
javascript中setInterval的用法
2015/07/19 Javascript
详解JavaScript时间格式化
2015/12/23 Javascript
JS验证逗号隔开可以是中文字母数字
2016/04/22 Javascript
简洁实用的BootStrap jQuery手风琴插件
2016/08/31 Javascript
ion content 滚动到底部会遮住一部分视图的快速解决方法
2016/09/06 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
easyui下拉框动态级联加载的示例代码
2017/11/29 Javascript
详解Chai.js断言库API中文文档
2018/01/31 Javascript
JS实现获取word文档内容并输出显示到html页面示例
2018/06/23 Javascript
jQuery实现仿京东防抖动菜单效果示例
2018/07/06 jQuery
vue组件 keep-alive 和 transition 使用详解
2019/10/11 Javascript
python中字符串前面加r的作用
2015/06/04 Python
python实现简单聊天应用 python群聊和点对点均实现
2017/09/14 Python
python实现数据分析与建模
2019/07/11 Python
CSS3 mask 遮罩的具体使用方法
2017/11/03 HTML / CSS
html5 canvas合成海报所遇问题及解决方案总结
2017/08/03 HTML / CSS
ESDlife健康生活易:身体检查预订、搜寻及比较
2019/05/10 全球购物
澳大利亚礼品篮网站:Macarthur Baskets
2019/10/14 全球购物
迪奥美国官网:Dior美国
2019/12/07 全球购物
美国室内盆栽植物购买网站:Plants.com
2020/04/24 全球购物
中学教师培训制度
2014/01/31 职场文书
付款委托书范本
2014/04/04 职场文书
师范类求职信
2014/06/21 职场文书
2014年小学美术工作总结
2014/12/20 职场文书