python能自动解压各种压缩文件,你知道吗?

Python与文件操作:压缩、解压与文件遍历 在Python中,os模块是一个非常重要的内置模块,它提供了丰富的操作系统接口,允许程序员执行诸如创建、删除、移动文件,以及遍历目录结构等底层文件系统操作。:这个函数接受一个路径参数,返回一个包含指定目录下所有文件和子目录名称的列表。例如:import os:这个函数用于递归地访问目录树下的每一个目录及其包含的文件。它以生成器的形式返回三元组,分别表示当前目录路径、子目录名列表和文件名列表。 阅读详情

一、需求描述

编写一个Python程序,每次下载压缩包形式的文件后,自动将内部文件解压到当前文件夹后将压缩包删除,通过本案例可以学到的知识点:

os 模块综合应用

glob 模块综合应用

利用 gzip zipfile rarfile tarfile 模块解压文件

二、步骤分析和前置知识

码代码之前需要将复杂问题解释成多个明确的要求,即这个程序实现的逻辑为:

  1. 定时检测某个文件夹(如 download 文件夹)是否存在压缩文件

  2. 如果有新出现的压缩文件则将其解压到当前文件夹内的新文件夹中 删除压缩文件

  3. 提到压缩文件就要分不同压缩格式进行讨论,主要有以下4种:

提到压缩文件就要分不同压缩格式进行讨论,主要有以下4种:

.gz: 即gzip,通常只能压缩一个文件

.tar: 本质上不是压缩工具而是打包工具,可以跟.gz配合形成.tar.gz的打包压缩格式

.zip: 和.tar.gz很类似但可以打包压缩多个文件

.rar: 打包压缩文件,最初用于DOS

因此,文件是否为压缩文件的判断逻辑可以如下:

  1. 建立一个含压缩包后缀的列表 compressed_lst = ['gz', 'tar', 'zip', 'rar']

  2. 目标文件夹下的所有文件名运行filename.split(.)[-1]获取后缀名

  3. 判断后缀名是否在compressed_lst中,如果存在则运行后续的解压代码

  4. 如果是以gz结尾的文件,解压后需要再次判断是否是以.tar结尾,并进行相应处理

不同压缩文件的解压代码各不相同,在后续代码操作中具体展开。

码字不易废话两句:有需要python学习资料的或者有技术问题交流 “点击” 即可

三、代码实现

首先是获取download文件夹下所有文件的文件名

import glob
import os

path = r'C:\xxxx\download'
file_lst = glob.glob(path + '/*')
# 列表推导式
filename_lst = [os.path.basename(i) for i in file_lst]

print(filename_lst)

接下来根据文件的后缀名判断是否需要压缩,先看一下代码框架

for i in filename_lst:
    if '.' in i:
        # 获取后缀名
        suffix = i.split('.')[-1]
        # 逐个将后缀名和各格式的压缩后缀匹配
        if suffix == 'gz':
            pass
            if ...: # 再次判断新产生的文件名是否以 .tar 结尾
                pass
        if suffix == 'tar':
            pass
        if suffix == 'zip':
            pass
        if suffix == 'rar':
            pass

这里有2个注意点:

  1. 有些文件没有后缀名,因此可能不存在 .,这时用filename.split('.')[-1]会报错,因此需要先判断

  2. 以.gz结尾的文件,解压后需要再次判断是否是以.tar结尾,然后我们就可以分别将四种压缩文件的解压代码写成函数,符合时候单独调用即可

处理.gz 文件

import gzip

def ungz(filename):
    filename = filename[:-3] # gz文件的单文件解压就是去掉 filename 后面的 .gz
    gz_file = gzip.GzipFile(filename)<
Python自动解压各种压缩文件 压缩文件是我们在使用电脑时经常会遇到的。压缩文件并不只有一种压缩模式。平常我们都是通过安装一些解压缩软件来打开这些不同的压缩文件。今天我们来谈一谈,如何用Python解压几种常见类型的压缩文件。 一、需求描述 编写一个Python程序,每次下载压缩包形式的文件后,自动将内部文件解压到当前文件夹后将压缩包删除,通过本案例可以学到的知识点: os模块综合应用 glob模块综合应用 利用gzipzipfilerarfiletarfile模块解压文件 ... 阅读详情

相关推荐

利用Python下载并解压压缩文件

Python实战篇——利用Python下载并解压压缩文件前言应用背景工具包准备压缩文件下载压缩文件解压拓展总结 前言 挺久没整理自己的学习笔记了,今天就理一下如何通过Python下载并自动解压在线打包好的压缩包吧~ 应用背景 公司的产品日志(log)是每天自动在服务器上打包好的,在当天能下载前一天的日志,在日常工作中的数据分析经常需要通过处理日志文件来产出结果。而在需要同时处理多个产品日志,且几乎每天都要到浏览器粘贴个链接来下载日志,还得到文件夹中手动解压……的情况下,让我越来越忍受不了这种又费时间又费精力

制了个仗的博客 5026

让Python在后台自动解压各种压缩文件!自动化就是好!

需求描述 编写一个 Python 程序,每次下载压缩包形式的文件后,自动将内部文件解压到当前文件夹后将压缩包删除,通过本案例可以学到的知识点: os 模块综合应用 glob 模块综合应用 利用 gzip zipfile rarfile tarfile 模块解压文件 图片上传失败 ​重试 步骤分析和前置知识 码代码之前需要将复杂问题解释成多个明确的要求,即这个程序实现的逻辑为: 定时检测某个文件夹(如 download 文件夹)是否存在...

pythonlaodi的博客 563

Python实现文件解压缩

本文介绍了如何使用Python进行文件解压缩的方法,并提供了相应的源代码示例。通过使用内置模块如zipfile和tarfile,以及第三方库如patoolib,我们可以轻松地实现文件解压缩的功能。文件解压缩是在计算机领域中常见的任务之一,它允许我们将压缩文件(如.zip或.tar.gz)解压缩为原始文件或目录。除了.zip和.tar.gz格式外,还有许多其他常见的压缩文件格式,如.rar、.7z等。tarfile模块是Python的内置模块,用于处理.tar.gz格式的压缩文件。函数来解压缩.rar文件。

ByteHero的博客 258

如何手动打包Linux(麒麟系统)的Qt程序

Qt在windows上有自带的windeployqt来帮助打包程序,但是对于linux系统来说Qt并没有自带对应的打包程序。尽管存在开源的linuxdeployqt打包程序,但是在使用的过程中会出现很多问题,对于arm架构的系统来说需要编译并修改源码等等。确定你程序所需要的插件,然后将你使用的Qt版本对应的插件复制到plugins里边。你可以根据各个库后面的路径来找到对应的库,并将它们全部复制到之前创建的lib目录下。复制你的可执行程序到bin目录下(将 your_executable。

qq_45903233的博客 3604

FreeRTOS项目:智能手表(1);

从 “最底层启动”→“系统基础配置”→“硬件驱动”→“中间件能力封装”→“上层业务功能”,分层递进、从基础到应用,就能逐步把整个项目的逻辑串联起来~

weixin_46847454的博客 1446

Java 开发 修改【冒险岛 079 私服】完整学习流程

第 1-2 天:环境搭建 + 运行原版 079 服务端,能正常登录游戏;第 3-4 天:纯配置文件修改,掌握倍率、属性、怪物、道具的修改,改出第一个「百倍经验私服」;第 5-10 天:Java 代码基础修改,掌握 Player/Skill/Monster 核心类的修改,实现技能无冷却、一刀秒怪、升级满属性;第 11-20 天:Java 代码进阶修改,掌握业务逻辑修改,实现死亡不掉经验、自动捡物、装备强化无失败;第 21-30 天。

萧曳丶 3881

RBF(径向基神经网络)基础解析与代码实例:拟合任意函数

目前RBF这一强大工具已经被基本证实可以拟合任意函数! 在机器学习领域,神经网络是一种强大的工具,用于解决各种复杂问题。其中,径向基函数(RBF,Radial Basis Function)神经网络以其独特的结构和优异的性能,在非线性函数逼近、模式识别等领域表现尤为突出。RBF神经网络是一种前馈神经网络,其隐含层节点的激活函数采用径向基函数,具有更强的局部逼近能力和更快的收敛速度。

橙色小博的博客,励志在人工智能领域发光发热! 1602

使用海康机器人的SDK进行DWS开发时如何筛选不同类型的相机

使用MVIDCodeReader、MvCodeReaderSDK、MvVolMeasureSDK联合开发时,通常会做一些设备枚举列表,但是不同类型的设备需要枚举在不同的列表中,便于软件使用者配置参数,例如: 如何保证枚举出来的设备是可以选择的对应的设备。我们通常枚举出来的是这样的: 解决办法 在联合开发中,我们发现,只有MvVolMeasureSDK的枚举设备接口EnumStereoCamEx可以正确的只枚举出网络内的体积设备,其余的MVIDCodeReader、MvCodeReaderS

qq_29123967的博客 2730

Ollama运行DeepSeek大模型调优指南:GPU与CPU协同实现性能最大化

Ollama运行DeepSeek大模型调优指南

qq_32358423的博客 3994

STM32驱动AD2S1210实现旋变解码与角度读取

旋转变压器作为一种耐高温、抗振动的角度传感器,在工业伺服、机器人关节和电动汽车电驱等场景中占据重要地位。其输出信号需要经过专用转换芯片处理才能被MCU高效使用。AD2S1210是一款典型的旋变数字转换器(RDC),内部采用Type II型跟踪环,将模拟SIN/COS信号实时解算为数字角度与速度,降低了处理器负担并提升抗干扰能力。本文基于STM32平台,详细介绍了AD2S1210的硬件接线、SPI通信配置、寄存器初始化流程,以及读取位置数据时的SAMPLE脉冲时序等关键实现。同时总结了常见故障如全FF、角度跳

weixin_34194829的博客 190

基于ESP32的智能厨房控制系统开发

随着智能家居技术的发展,越来越多的家庭开始将传统的厨房设备进行智能化改造,以提高烹饪效率和生活质量。智能厨房控制系统是物联网(IoT)应用的重要组成部分,它将家居设备、传感器和网络结合起来,提供便捷的控制与监测功能,使厨房的烹饪过程更加智能、便捷和安全。基于ESP32的智能厨房控制系统不仅能够实现远程控制和监控,还能实现温度、湿度、烹饪状态的实时反馈,甚至具备智能化的推荐和自动化控制能力。ESP32是一款功能强大、集成度高的嵌入式开发平台,具有Wi-Fi和蓝牙双模通信能力,广泛应用于物联网设备的开发。

2201_76125393的博客 657

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

上一篇: jupyter的这个最强插件你居然还不知道?
下一篇: 学会了这几点,你就学会了Web | Django 与数据库交互
python程序员小'鹏
博客等级 码龄6年 163粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值