python青年大学习解压

import os
import zipfile
import tarfile
import rarfile
import py7zr
import shutildef rename(new_path, target):for root, dirs, files in os.walk(new_path):## 表示为文件夹for d in dirs:try:new_dname = d.encode('cp437').decode('gbk')os.rename(os.path.join(root, d), os.path.join(root, new_dname))except:new_dname = d.encode('cp437').decode('utf-8')os.rename(os.path.join(root, d), os.path.join(root, new_dname))print("新的名字", new_dname)rename(os.path.join(root, new_dname), target)for f in files:print("需要修改f", f)try:new_name = f.encode('cp437').decode('gbk')os.rename(os.path.join(root, f), os.path.join(root, new_name))except:new_name = f.encode('cp437').decode('utf-8')os.rename(os.path.join(root, f), os.path.join(root, new_name))shutil.copy(os.path.join(root, new_name), target)print("新的名字", new_name)def zip_decompress(file_path, new_path):'''支持中文的解压缩程序file_path:原zip文件路径new_path:新文件夹路径'''z = zipfile.ZipFile(f'{file_path}', 'r')z.extractall(path=f"{new_path}")print(new_path)z.close()def exec_decompress(source, target, del_flag):"""解压实现的公共代码:param source: 压缩文件全路径:param target: 解压后文件存储路径:return:"""file_suffix = os.path.splitext(source)[1].lower()try:print()print('开始解压文件: %s' % source)# zip 解压if file_suffix == '.zip':zip_decompress(source, os.path.join(target, "rar"))# rar 解压elif file_suffix == '.rar':rf = rarfile.RarFile(source)rf.extractall(target)elif file_suffix == '.7z':if py7zr.is_7zfile(source):with py7zr.SevenZipFile(source, mode='r') as sevenZ_f:# 解压到指定目录sevenZ_f.extractall(target)else:print('This is not a true 7z file!')# tar、tgz(tar.gz) 解压elif file_suffix in ['.tar', '.gz']:tf = tarfile.open(source)tf.extractall(target)# 关闭文件释放内存tf.close()print('完成了解压任务: %s' % source)print()except Exception as e:print("发生了错误", e)print("错误的路径为", source)# 根据标识执行原压缩文件删除if del_flag and os.path.exists(source):os.remove(source)def unzip_file(source, target=None, unzipped_files=None, del_flag=True):"""根据指定的压缩文件类型递归解压所有指定类型的压缩文件:param src_file: 解压的源文件路径,可以为文件夹路径也可以是文件路径:param dst_dir: 解压后的文件存储路径:param unzipped_files: 完成解压的文件名列表:param del_flag: 解压完成后是否删除原压缩文件,默认删除:return: 完成解压的文件名列表"""for f in os.listdir(source):if not os.path.isdir(f):exec_decompress(os.path.join(source, f), target, del_flag)try:rename(os.path.join(target, "rar"), target)# 删除rar文件except:print("发生了错误")print(os.path.join(target, "rar"))shutil.rmtree(os.path.join(target, "rar"))# # 如果传入的文件路径为文件目录,则遍历目录下所有文件# if os.path.isdir(src_file):#     # 初始化文件目录下存在的压缩文件集合为空#     zip_files = []#     # 如果传入的目的文件路径为空,则取解压的原文件夹路径#     dst_dir = dst_dir if dst_dir else src_file#     # 遍历目录下所有文件#     for file in os.listdir(src_file):#         file_path = os.path.join(src_file, file)#         # 如果是文件夹则继续递归解压#         if os.path.isdir(file_path):#             dst_path = os.path.join(dst_dir, file)#             unzip_file(file_path, dst_path, unzipped_files)#         # 如果是指定类型的压缩文件则加入到压缩文件列表#         elif os.path.isfile(file_path) and os.path.splitext(file_path)[#             1].lower() in zip_types and file_path not in unzipped_files:#             zip_files.append(file_path)#     # 遍历压缩文件列表,执行压缩文件的解压#     for zip_file in zip_files:#         exec_decompress(zip_file, dst_dir)#     # 如果当前目录存在压缩文件则完成所有文件解压后继续遍历#     if zip_files:#         unzip_file(dst_dir, unzipped_files=unzipped_files)# # 如果传入的文件路径是指定类型的压缩文件则直接执行解压# elif os.path.isfile(src_file) and os.path.splitext(src_file)[1].lower() in zip_types:#     dst_dir = dst_dir if dst_dir else os.path.dirname(src_file)#     exec_decompress(src_file, dst_dir)return unzipped_filesdef copy_to_file(source, target):items = os.listdir(source)for item in items:# 如果是文件夹的话path = os.path.join(source, item)if os.path.isdir(path):print("复制的任务", path)try:for i in os.listdir(path):print("复制的文件名", i)shutil.copy(os.path.join(path, i), target)# 移除文件夹shutil.rmtree(path)except Exception as e:print("复制错误信息", e)print("错误的", path)if __name__ == '__main__':path = os.path.join(os.getcwd(), "青年大学习第八期")# 第一步进行解压文件result = unzip_file(path, path, unzipped_files=None, del_flag=False)copy_to_file(path, path)

python解压文件(自用)相关推荐

  1. python 解压文件 已存在_python解压zip和rar文件问题以及解决方法

    写此文的目的是记录自己的学习过程,一些经过,遇到问题以及解决问题的方法,存放在这里,方便自己以后复习以及自己的一些总结,如果此文对你有帮助,请随时联系我微信:wangzhixiong1533 ◆ ◆ ...

  2. python解压文件中哪个是安装包_python解压文件格式的基本方法

    应对多种压缩包格式的python库:patool.如果平时只用基本的解压.打包等操作,也不想详细了解各种压缩格式对应的python库,patool应该是个不错的选择. patool库支持的格式包括: ...

  3. python解压文件_使用Python实现文件压缩和解压

    大家可能都熟悉.zip格式的文件.它可以把多个文件,压缩成一个文件.这在网络上传输时很有用,而且节省硬盘空间. 接下来,我们使用Python实现压缩和解压. 读取ZIP文件信息 要读取ZIP文件的内容 ...

  4. Python 解压文件的几种方法

    gz: 即gzip.通常仅仅能压缩一个文件.与tar结合起来就能够实现先打包,再压缩. tar: linux系统下的打包工具.仅仅打包.不压缩 tgz:即tar.gz.先用tar打包,然后再用gz压缩 ...

  5. python解压文件到指定路径

    os.walk(path)返回(root,dirs,files) os.path.isfile()判断是否是文件 zipfile.is_zipfile(file_path)判断是否是zip文件 imp ...

  6. python解压文件_Python压缩和解压缩文件(zip/unzip)详解

    通过zipfile模块实现对文件.文件夹的zip压缩和解压 #打包成zip文件 import zipfile f = zipfile.ZipFile('archive.zip','w',zipfile ...

  7. python 解压文件 重名_python小试身手-文件重命名,文件复制和压缩(.gz) - 铁匠铺的小铁匠...

    1 #!/usr/local/bin/python 2 #coding=UTF-8 3 4 importos5 importcsv as csv6 importre7 importshutil8 im ...

  8. python解压rar_Python解压 rar、zip、tar文件的方法

    Q1 :如何解压 rar 压缩包文件? A : Step1:检查是否有 rarfile 第三方库,若没有该模块,则需要进行安装 : Step2:参考代码如下: import rarfile impor ...

  9. python解压gz_python解压gz

    广告关闭 云服务器1核2G首年99年,还有多款热门云产品满足您的上云需求 执行程序,会在当前目录下生成aa.tar.gz文件二.解压defuntar(fname,dirs):解压tar.gz文件:pa ...

最新文章

  1. python3 处理 html转义字符
  2. 十五天精通WCF——第十四天 一起聊聊FaultException
  3. R,Python,Scala,Go,Julia
  4. 【ABAP】SAP判断单据是否被锁定
  5. 应该增加黑样本还是白样本呢
  6. Java 图形用户界面 AWT事件处理
  7. (一)SpringBoot 整合 MyBatis
  8. 【视觉项目】【day2】8.21号实验记录(手机固定高度15cm拍摄+直方图均衡化+模板匹配,模板12个,测试28个,效果十分差)
  9. 如何在麦田拍出小清新?
  10. element时间范围选择添加限制条件
  11. 【渝粤教育】国家开放大学2018年秋季 0321-21T学前心理学 参考试题
  12. Gradle sync failed: Unsupported method: NativeArtifact.getSourceFolders().
  13. 计算机屏幕截图如何保存,怎么在屏幕截图
  14. Ubantu16.04.6下使用petalinux2020.1定制Linux系统
  15. 此工作站和主域间的信任关系失败 原因及解决办法
  16. 天翼云主机利用filezilla部署FTP服务器
  17. Project与office 365冲突问题
  18. 前端——Form表单
  19. python 股票竞价数据_GitHub - TruthHun/auction-stock: 集合竞价选股(股票),基于收盘价与前收盘价的选股策略...
  20. 嵌入式 Linux 入门 环境篇(二、安装虚拟机 — 体验 Ubuntu 22.04)

热门文章

  1. Ubuntu18.04之搜狗输入法
  2. ffmpeg之vs编译
  3. dreamweaver 正则表达式为属性值加上双引号_IT兄弟连 HTML5教程 HTML5表单 新增的表单属性3...
  4. ftp如何在服务器上打开文件,ftp在服务器上打开文件
  5. php原生判断,JavaScript
  6. spingbot 与 activiti 整个 中创建表而找不到表的问题(创建表失败)
  7. 对称二叉树c++_二叉树:我对称么?
  8. 电脑测试软件_一种笔记本电脑转轴扭力测试仪
  9. vim php 配置文件,spacevimsetting
  10. 广东计算机考试1级时间安排,1级计算机考试时间