Python面试题更新 2026-08-03

请用 Python 编写一段代码,用于批量重命名指定目录下的文件。

考察说明

考查候选人使用 Python 进行文件系统操作和批量处理的能力,包括遍历目录、字符串处理和异常处理。

回答思路

  1. 【回答框架 1】核心方案是使用 os 模块的 listdir 或 scandir 遍历目标目录,获取所有文件条目,再对每个文件用 os.rename 进行重命名。可以先把新文件名规则定义为函数,再逐一应用,保证逻辑清晰。
  2. 【回答框架 2】遍历时只处理普通文件,过滤掉目录,避免误改目录名;用 os.path.isfile 检查。若需递归子目录,可改用 os.walk 或 pathlib 的 glob。路径拼接统一用 os.path.join 以兼容不同系统。
  3. 【回答框架 3】重命名规则示例:在文件名前加前缀如 'renamed_',或把旧扩展名替换为新扩展名。实现时用 os.path.splitext 分离文件名和扩展名,再用字符串方法加工,最后 os.rename 完成修改。
  4. 【回答框架 4】要处理异常:源文件不存在或权限不足时 os.rename 会报错,可用 try-except 捕获并记录日志。同时需检查目标文件名是否已存在,避免覆盖,可先用 os.path.exists 判断并采取跳过或加序号策略。
  5. 【回答框架 5】边界情况包括空目录、文件名含特殊字符、系统保留名等。性能方面,对大量文件建议先列出全部再逐个处理,避免在生成器上多次统计。整体复杂度为 O(n),n 为文件数。
  6. 【关键点 1】使用 os.listdir 结合 os.path.isfile 过滤目录,或用 pathlib.Path.iterdir 简化。
  7. 【关键点 2】用 os.rename 执行改名,源路径用 os.path.join 拼接。
  8. 【关键点 3】先检查目标是否存在避免覆盖,用 try-except 捕获权限等异常。
  9. 【易错点 1】不加过滤就重命名目录导致目录也被改。
  10. 【易错点 2】未检查目标重名而覆盖已有文件。
  11. 【易错点 3】忽略读取目录或文件权限异常,导致脚本中断。