RELATEED CONSULTING
相关咨询
欢迎选择下列在线客服咨询
微信客服
微信客服二维码
热线电话:13863516421
7x24小时,全年无休
我们服务器的承诺:
关闭右侧工具栏

境外国外服务器专题

怎样修改示例代码以适应不同的文件路径格式?

  • 来源:本站
  • 编辑: 超级管理员
  • 时间: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 替换为正确的解压密码即可使用。


我们提供7X24小时售后服务,了解更多机房产品和服务,敬请联系
购买咨询 售后服务