Python面试题更新 2026-08-03

给定一个目录路径,如何用 Python 编写脚本统计其中所有文件的总字节数?

考察说明

考查 Python 文件遍历与基本 I/O 操作,特别是目录遍历方式的选型。

回答思路

  1. 【回答框架 1】核心实现可采用 os.path.getsize 与 os.walk 组合:os.walk 递归生成目录树,对每个文件调用 os.path.getsize 累加字节数,最后用 getsizeof 返回总大小。
  2. 【回答框架 2】若目录规模很大,可改用 pathlib 的 Path.rglob 与 file.stat().st_size,其语义更清晰,且惰性遍历避免一次性载入所有路径。
  3. 【回答框架 3】需注意符号链接与硬链接可能造成重复计数,默认 get 与 stat 会跟随链接;若要忽略链接可过滤 is_file 或使用不跟随链接的 API。
  4. 【回答框架 4】异常处理方面,应捕获权限错误、文件被占用或特殊文件系统错误,用 try/except 跳过不可读文件,否则脚本会中断。
  5. 【回答框架 5】可输出易读格式(如 KB/MB/GB),但核心计算始终以字节为单位,减少精度损失。
  6. 【关键点 1】用 os.walk 或 Path.rglob 遍历目录树。
  7. 【关键点 2】用 os.path.getsize 或 stat().st_size 获取字节大小。
  8. 【关键点 3】累计求和并注意异常处理。
  9. 【关键点 4】性能上避免一次性收集所有文件再统计,应边遍历边累加。
  10. 【易错点 1】直接对目录调用 getsize 会报错,需判断文件。
  11. 【易错点 2】symlink 可能导致重复计数或循环,应谨慎处理。
  12. 【易错点 3】权限不足时未捕获异常会导致脚本崩溃。