本系列文章配套代码获取有以下两种途径:
-
通过百度网盘获取:
链接:https://pan.baidu.com/s/1i9F6oV1J5oZnIsOASDs0gQ?pwd=mnsj
提取码:mnsj
-
前往GitHub获取:
https://github.com/returu/Python_mini_program
脚本需求:
实现步骤:
patoolib 是一个 Python 库,它提供了对多种压缩文件格式的支持,包括创建、解压、测试、列出、搜索、重新打包和比较压缩文件的功能。
具体实现步骤如下:
-
查看文件——使用glob包来实现;
-
解压——使用patoolib包来实现;
-
删除文件——使用内置模块os来实现。
代码实现:
具体代码如下所示:
# 导入必要的模块
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)
本篇文章来源于微信公众号: 码农设计师