首页Python【Python小程序】自动...

【Python小程序】自动解压并删除压缩包

本系列文章配套代码获取有以下两种途径:

  • 通过百度网盘获取:
链接:https://pan.baidu.com/s/1i9F6oV1J5oZnIsOASDs0gQ?pwd=mnsj 提取码:mnsj
  • 前往GitHub获取
https://github.com/returu/Python_mini_program





01

脚本需求


解压指定文件夹下的所有压缩文件到另一个文件夹,每个压缩文件解压到以其命名的子文件夹中。解压完成后自动删除压缩文件。
02

实现步骤


本次将通过patoolib包对压缩文件进行解压操作

patoolib 是一个 Python 库,它提供了对多种压缩文件格式的支持,包括创建、解压、测试、列出、搜索、重新打包和比较压缩文件的功能。

具体实现步骤如下:

  • 查看文件——使用glob来实现

  • 解压——使用patoolib来实现;

  • 删除文件——使用内置模块os来实现。

需要注意的是,patool包虽说支持多种格式的压缩文件,但是只有TARZIPBZIP2 GZIP 格式是原生支持的,不需要额外的辅助程序。对于其他格式,patoolib 依赖于外部程序来处理压缩文件。例如,处理 RAR 文件需要 unrar 程序,处理 7z 文件需要 7zip程序。
03

代码实现


代码定义unzip_files_to_folders函数用于在指定目录下解压并删除压缩文件。

具体代码如下所示:

# 导入必要的模块
import os  # 提供了与操作系统交互的功能,如文件路径操作
import glob  # 提供了从目录通配符搜索生成文件列表的功能
import patoolib  # 提供了解压缩多种格式压缩文件的功能
from patoolib.util import PatoolError  # 导入patoolib的错误处理模块

def unzip_files_to_folders(archive_folder_path, extract_folder_path):
   """
   解压指定文件夹下的所有压缩文件到另一个文件夹,每个压缩文件解压到以其命名的子文件夹中。

   参数:
   archive_folder_path (str): 压缩文件所在的文件夹路径。
   extract_folder_path (str): 解压后的文件应该存放的目标文件夹路径。
   """
   # 使用glob模块获取指定文件夹下的所有文件
   archives = glob.glob(os.path.join(archive_folder_path, '*'))
   # 打印所有找到的文件名称
   print("文件夹下的所有文件名称:")
   for archive in archives:
       print(os.path.basename(archive))

   # 遍历找到的所有压缩文件
   for archive in archives:
       # 从文件的完整路径中提取文件名(不包括扩展名)
       archive_filename = os.path.basename(archive).split('.')[0]
       # 构建解压目标文件夹的完整路径
       extract_to = os.path.join(extract_folder_path, archive_filename)
       # 如果目标文件夹不存在,则创建它
       if not os.path.exists(extract_to):
           os.makedirs(extract_to)

       # 尝试使用patoolib模块解压压缩文件
       try:
           # 使用patoolib的extract_archive函数解压文件到指定目录
           patoolib.extract_archive(archive, outdir=extract_to)
           # 解压完成后,删除原始压缩文件
           os.remove(archive)
           # 打印解压和删除操作的结果信息
           print(f"已解压并删除文件:{archive}")
       except PatoolError as e:  # 捕获patoolib可能抛出的PatoolError异常
           # 打印错误信息
           print(f"解压文件 {archive} 时发生错误:{e}")

# 指定压缩文件所在的文件夹路径和解压目标文件夹路径
# 请根据实际情况替换这些路径
archive_folder_path = './files'  # 压缩文件所在文件夹路径
extract_folder_path = './extract_files'  # 解压目标文件夹路径

# 调用函数,开始解压操作
unzip_files_to_folders(archive_folder_path, extract_folder_path)

本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments