跳到主要内容

批量校验目录

这个任务把每个文件的结果写成 JSON Lines,适合后续用日志系统、数据仓库或命令行工具逐行消费。

import json
from pathlib import Path
from vfp_reader import VfpError, VfpReader

root = Path("incoming")
with Path("verification.jsonl").open("w", encoding="utf-8") as output:
for path in sorted(root.rglob("*.vfp")):
try:
report = VfpReader.open(path).validate_source()
row = {"ok": True, **report}
except (VfpError, OSError) as exc:
row = {"ok": False, "path": str(path), "error": str(exc)}
output.write(json.dumps(row, ensure_ascii=False) + "\n")

对于极大目录,不要先把所有路径放到列表后再处理;Path.rglob() 可以逐项迭代。若要并发,限制 worker 数量并确保每个 worker 独立打开文件,避免把内存峰值乘以任务数。