如何用Python批量解压ZIP文件?快速解决方案
文章目录
- **如何用Python批量解压ZIP文件?快速解决方案**
- 代码
- 结果
- 详细解释
话不多说,先上干货!!!
代码
import os
import zipfile
def unzip_file(dir_path: str, zip_name: str, extract_dir: str, password: str = None):
"""
解压指定的 ZIP 文件到目标目录。
@param dir_path: 包含 ZIP 文件的源目录路径
@param zip_name: ZIP 文件的名称(不带 .zip 扩展名)
@param extract_dir: 解压后的文件存放目录
@param password: ZIP 文件的密码(可选)
@return: 无返回值
"""
# 构造完整的 ZIP 文件路径
zip_filepath = os.path.join(dir_path, zip_name + '.zip')
# 构造解压目标路径
extract_path = os.path.join(extract_dir, zip_name)
# 创建解压目标目录,如果不存在
if not os.path.exists(extract_path):
os.makedirs(extract_path)
try:
# 打开 ZIP 文件
with zipfile.ZipFile(zip_filepath, 'r') as extracting:
# 如果设置了密码,尝试解压
if password:
extracting.setpassword(password.encode('utf-8'))
# 解压所有文件到目标目录
extracting.extractall(extract_path)
print(f"成功解压:{zip_name}")
except Exception as e:
print(f"解压失败:{zip_name}, 错误:{str(e)}")
if __name__ == '__main__':
# 设置源目录和目标目录路径
dir_path = r'D:\桌面\baby' # 源目录
extract_dir = r'D:\桌面\ye' # 目标目录
# 获取 ZIP 文件列表
for filename in os.listdir(dir_path):
# 检查是否是 ZIP 文件
if filename.endswith('.zip'):
# 提取 ZIP 文件名(不带 .zip)
zip_name = filename[:-4]
try:
# 解压 ZIP 文件,传递密码(如无需密码,可省略或设置为 None)
unzip_file(dir_path, zip_name, extract_dir, password=None)
except Exception as e:
print(f"解压失败:{zip_name}, 错误:{str(e)}")
print(f"所有 ZIP 文件已解压到:{extract_dir}")
结果
详细解释
-
导入必要的模块
import os import zipfile
- os:用于处理文件路径、目录创建等操作
- zipfile:用于处理zip文件的解压
-
unzip_file函数
def unzip_file(dir_path: str, zip_name: str, extract_dir: str, password: str = None): """ 解压指定的 ZIP 文件到目标目录。 @param dir_path: 包含 ZIP 文件的源目录路径 @param zip_name: ZIP 文件的名称(不带 .zip 扩展名) @param extract_dir: 解压后的文件存放目录 @param password: ZIP 文件的密码(可选) @return: 无返回值 """ # 构造完整的 ZIP 文件路径 zip_filepath = os.path.join(dir_path, zip_name + '.zip') # 构造解压目标路径 extract_path = os.path.join(extract_dir, zip_name) # 创建解压目标目录,如果不存在 if not os.path.exists(extract_path): os.makedirs(extract_path) try: # 打开 ZIP 文件 with zipfile.ZipFile(zip_filepath, 'r') as extracting: # 如果设置了密码,尝试解压 if password: extracting.setpassword(password.encode('utf-8')) # 解压所有文件到目标目录 extracting.extractall(extract_path) print(f"成功解压:{zip_name}") except Exception as e: print(f"解压失败:{zip_name}, 错误:{str(e)}")
-
功能:解压指定的ZIP文件到目标目录。
-
步骤:①构造完整的ZIP文件路径和解压目标路径
②创建解压目标目录,如果不存在则创建
③打开ZIP文件,尝试解压到目标目录
④处理异常,输出成功或失败信息
-
-
主程序部分
if __name__ == '__main__': # 设置源目录和目标目录路径 dir_path = r'D:\桌面\baby' # 源目录 extract_dir = r'D:\桌面\ye' # 目标目录 # 获取 ZIP 文件列表 for filename in os.listdir(dir_path): # 检查是否是 ZIP 文件 if filename.endswith('.zip'): # 提取 ZIP 文件名(不带 .zip) zip_name = filename[:-4] try: # 解压 ZIP 文件,传递密码(如无需密码,可省略或设置为 None) unzip_file(dir_path, zip_name, extract_dir, password=None) except Exception as e: print(f"解压失败:{zip_name}, 错误:{str(e)}") print(f"所有 ZIP 文件已解压到:{extract_dir}")
-
功能:遍历源目录,解压所有ZIP文件到目标目录。
-
步骤:①设置源目录
dir_path
和目标目录extract_dir
②遍历源目录中的所有文件,筛选出ZIP文件
③对于每个ZIP文件,调用
unzip_file
函数进行解压 ④处理异常,输出解压结果
-
看到这里就结束了,你学会了吗???