如何使用Python批量解压密码保护的zip文件?
美国、香港服务器
如何使用Python批量解压密码保护的zip文件?
05-07 来源:
若要使用 Python 批量解压密码保护的 ZIP 文件,可按以下步骤操作:
定位要解压的 ZIP 文件:可以通过指定目录路径,使用 os 模块遍历该目录下的所有 ZIP 文件。
为每个 ZIP 文件设置密码并解压:对每个找到的 ZIP 文件,使用 zipfile 模块设置密码并进行解压。
下面是一个示例代码,展示了如何批量解压密码保护的 ZIP 文件:
python
import os
import zipfile
def batch_unzip_password_protected_files(zip_dir, password, extract_dir):
# 遍历指定目录下的所有文件
for root, dirs, files in os.walk(zip_dir):
for file in files:
if file.endswith(".zip"):
zip_file_path = os.path.join(root, file)
try:
# 打开 ZIP 文件
with zipfile.ZipFile(zip_file_path, "r") as zip_ref:
# 设置密码
zip_ref.setpassword(password.encode())
# 构建每个 ZIP 文件对应的解压目录
file_extract_dir = os.path.join(extract_dir, os.path.splitext(file)[0])
# 创建解压目录
os.makedirs(file_extract_dir, exist_ok=True)
# 解压所有文件到指定目录
zip_ref.extractall(file_extract_dir)
print(f"成功解压 {zip_file_path} 到 {file_extract_dir}")
except FileNotFoundError:
print(f"错误:未找到 {zip_file_path} 文件。")
except zipfile.BadZipFile:
print(f"错误:{zip_file_path} 不是有效的 ZIP 文件。")
except RuntimeError as e:
if "Bad password for file" in str(e):
print(f"错误:{zip_file_path} 的密码错误,请检查密码。")
else:
print(f"发生未知错误:{e}")
# 示例用法
zip_directory = "your_zip_files_directory"
password = "your_password"
extract_directory = "extracted_files"
batch_unzip_password_protected_files(zip_directory, password, extract_directory)
代码解释
batch_unzip_password_protected_files 函数:
此函数接收三个参数:zip_dir 是包含 ZIP 文件的目录,password 是 ZIP 文件的解压密码,extract_dir 是解压文件的目标根目录。
运用 os.walk 函数遍历指定目录及其子目录中的所有文件。
针对每个以 .zip 结尾的文件,构建其完整路径。
利用 zipfile.ZipFile 打开 ZIP 文件,使用 setpassword 方法设置密码。
为每个 ZIP 文件创建对应的解压子目录,避免文件覆盖。
调用 extractall 方法将文件解压到对应的子目录中。
采用 try - except 块捕获并处理可能出现的异常,如文件未找到、ZIP 文件损坏、密码错误等。
示例用法:
你需要将 your_zip_files_directory 替换为实际包含 ZIP 文件的目录路径,your_password 替换为正确的解压密码。
解压后的文件会被存储在 extracted_files 目录下,每个 ZIP 文件对应一个子目录。
通过上述代码,你可以方便地批量解压密码保护的 ZIP 文件。
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快