对,所以不要把输出单独扔到另一个目录。最合适的是给当前长目录映射一个短盘符,文件实际位置不变,Notebook、表格和图片仍在同一个项目文件夹里。
在 CMD 或 PowerShell 执行:
subst P:"D:\softnew\wx\xwechat_files\wxid_upe37v92v8pj22_f84f\msg\file\2026-06\代码"然后从P:打开项目:
code P:\paper_results_figures_seed2026_bundleNotebook 中继续保持:
ROOT=Path.cwd()OUTPUT_DIR=ROOT/"paper_results_ipynb_seed2026"这样输出仍然集中在:
paper_results_figures_seed2026_bundle/ ├─ paper_results_figures_seed2026.ipynb ├─ ufno_publication_tools.py └─ paper_results_ipynb_seed2026/ ├─ tables/ └─ figures_main/但程序看到的路径变成:
P:\paper_results_figures_seed2026_bundle\paper_results_ipynb_seed2026\...长度会短很多,不再触发 Windows 路径限制。
同时把clean_stem换成短名称版,进一步保险:
importhashlibimportredefclean_stem(text):text=str(text)short=re.sub(r"[^0-9A-Za-z_-]+","_",text)digest=hashlib.md5(text.encode("utf-8")).hexdigest()[:6]returnf"{short[:24]}_{digest}"操作顺序:
- 保存 Notebook。
- 关闭当前 Jupyter 内核和 VS Code。
- 执行
subst P: ...。 - 从
P:重新打开项目。 - 保持原来的统一输出目录。
- 重新运行失败的云图单元格。
之前已经生成的 CSV 和图片可以直接复制回新的统一输出目录,或者删除旧的半成品后重新生成。取消映射时执行:
subst P:/D映射盘符只改变访问路径,不会移动或复制你的真实文件。