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学习pygal绘制线图代码分享
Dec 09 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
Aug 05 Python
python3编写ThinkPHP命令执行Getshell的方法
Feb 26 Python
Python计算时间间隔(精确到微妙)的代码实例
Feb 26 Python
Python上下文管理器全实例详解
Nov 12 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
Jan 19 Python
django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例
May 12 Python
django在开发中取消外键约束的实现
May 20 Python
利用python进行文件操作
Dec 04 Python
python利用xpath爬取网上数据并存储到django模型中
Feb 26 Python
python中print格式化输出的问题
Apr 16 Python
python 中[0]*2与0*2的区别说明
May 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
动态网站web开发 PHP、ASP还是ASP.NET
2006/10/09 PHP
服务器web工具 php环境下
2010/12/29 PHP
PHP实现读取一个1G的文件大小
2013/08/24 PHP
php通过字符串调用函数示例
2014/03/02 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
2016/11/14 PHP
laravel ORM 只开启created_at的几种方法总结
2018/01/29 PHP
【消息提示组件】,兼容IE6/7&&FF2
2007/09/04 Javascript
自己的js工具_Form 封装
2009/08/21 Javascript
jquery text()要注意啦
2009/10/30 Javascript
js url传值中文乱码之解决之道
2009/11/20 Javascript
用dtree实现树形菜单 dtree使用说明
2011/10/17 Javascript
基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏的代码
2014/05/11 Javascript
jQuery 重复加载错误以及修复方法
2014/12/16 Javascript
JS实现自动切换文字的导航效果代码
2015/08/27 Javascript
jQuery打字效果实现方法(附demo源码下载)
2015/12/18 Javascript
JS只能输入正整数的简单实例
2016/10/07 Javascript
微信小程序开发教程-手势解锁实例
2017/01/06 Javascript
Vue学习笔记之表单输入控件绑定
2017/09/05 Javascript
javascript实现最长公共子序列实例代码
2018/02/05 Javascript
three.js 如何制作魔方
2020/07/31 Javascript
[01:42:49]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第一场 2月26日
2021/03/11 DOTA
Python实现将不规范的英文名字首字母大写
2016/11/15 Python
python生成密码字典的方法
2018/07/06 Python
Django如何开发简单的查询接口详解
2019/05/17 Python
Python实现TCP通信的示例代码
2019/09/09 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
2020/01/21 Python
python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例
2020/03/06 Python
印度尼西亚最大的电商平台:Tokopedia(印尼版淘宝)
2017/12/02 全球购物
婴儿鞋,独特的婴儿服装和配件:Zutano
2018/11/03 全球购物
美国在线宠物商店:Chewy
2019/01/12 全球购物
JRE、JDK、JVM之间的关系怎样
2012/05/16 面试题
幼儿园毕业典礼主持词
2014/03/21 职场文书
2014年药品销售工作总结
2014/12/16 职场文书
单位工作证明范本
2015/06/15 职场文书
GitHub上77.9K的Axios项目有哪些值得借鉴的地方详析
2021/06/15 Javascript
SpringCloud项目如何解决log4j2漏洞
2022/04/10 Java/Android