
怎样修改示例代码以适应不同的文件路径格式?
- 来源:本站
- 编辑: 超级管理员
- 时间:2025-05-08 09:21:35
- 阅读25次
为了让示例代码能够适应不同的文件路径格式,你可以在代码里添加一些处理逻辑,例如处理绝对路径和相对路径、不同操作系统的路径分隔符等。下面是修改后的代码,它能更好地适应不同的文件路径格式:
python
import os
import zipfile
import pathlib
def batch_unzip_password_protected_files(zip_dir, password, extract_dir):
# 将输入的路径转换为 Path 对象,以统一处理不同操作系统的路径格式
zip_dir = pathlib.Path(zip_dir)
extract_dir = pathlib.Path(extract_dir)
# 确保提取目录存在
extract_dir.mkdir(parents=True, exist_ok=True)
# 遍历指定目录下的所有文件
for zip_file_path in zip_dir.rglob('*.zip'):
try:
# 打开 ZIP 文件
with zipfile.ZipFile(zip_file_path, 'r') as zip_ref:
# 设置密码
zip_ref.setpassword(password.encode())
# 构建每个 ZIP 文件对应的解压目录
file_extract_dir = extract_dir / zip_file_path.stem
# 创建解压目录
file_extract_dir.mkdir(parents=True, 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)
代码修改说明
使用 pathlib 模块:
pathlib 模块提供了面向对象的文件系统路径操作方式,能自动处理不同操作系统的路径分隔符(如 Windows 用 \,Unix/Linux 用 /)。
将输入的 zip_dir 和 extract_dir 转换为 pathlib.Path 对象,这样在后续操作中就无需担心路径分隔符的问题。
确保提取目录存在:
使用 extract_dir.mkdir(parents=True, exist_ok=True) 确保解压目标根目录存在,如果目录不存在会自动创建,并且允许父目录也一起创建。
遍历 ZIP 文件:
使用 zip_dir.rglob('*.zip') 递归地遍历 zip_dir 目录及其子目录下的所有 .zip 文件。这种方式更简洁,并且与 pathlib 模块的使用保持一致。
构建解压目录:
使用 extract_dir / zip_file_path.stem 构建每个 ZIP 文件对应的解压子目录。/ 运算符在 pathlib.Path 对象之间用于拼接路径,stem 属性返回文件名(不包含扩展名)。
通过这些修改,代码能更好地适应不同的文件路径格式,包括绝对路径、相对路径以及不同操作系统的路径表示方式。你只需将 your_zip_files_directory 替换为实际包含 ZIP 文件的目录路径,your_password 替换为正确的解压密码即可使用。
- 如何在不清除数据的情况下对已挂···
2025-06-09
- 怎样通过命令行方式查看已挂载硬···
2025-06-09
- 如何在宝塔面板中对已挂载的硬盘···
2025-06-09
- 企业选择Linux服务器的优势有哪些···
2025-06-07
- 什么是 Linux 服务器?
2025-06-07
- 新加坡服务器适合的场景?
2025-06-05
- 面向未来的高可用境外服务器架构···
2024-08-26
- 跨境电商成功案例之优秀外国服务···
2024-08-22
- 从成本效益角度分析境外服务器的···
2024-08-17
- 如何规避使用外国服务器的风险问···
2024-08-16
- 搭建安全稳定的境外网站:首选外···
2024-08-19
- 针对中小企业的境外服务器配置指···
2024-08-22