pathlib相对路径Mac正常Windows报错,求解决方案
问题排查与解决方案
核心原因
你遇到的问题是**Windows传统路径长度限制(默认260字符)**导致的:MacOS对文件路径长度没有严格限制,但Windows默认限制完整路径(包含目录和文件名)不超过260字符。虽然你的目标目录存在,但拼接特定文件名后总路径长度超出阈值,就会触发FileNotFoundError——改短文件名能正常保存也验证了这一点。
具体解决方法
1. 启用Windows长路径支持(推荐)
Windows 10 1607及以后版本支持突破260字符限制,但需要手动开启:
- 通过组策略:
打开本地组策略编辑器(运行gpedit.msc),依次导航到计算机配置 > 管理模板 > 系统 > 文件系统,找到并启用启用Win32长路径选项。 - 通过注册表:
打开注册表编辑器(运行regedit),定位到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem,找到LongPathsEnabled(DWORD类型),将其值改为1。若该键不存在则新建。
2. 代码层面适配长路径
如果无法修改系统设置,可以在代码中强制Windows使用长路径API,给路径添加\\?\前缀:
import os from pathlib import Path def get_compatible_path(path): if os.name == 'nt': # 转换为绝对路径并添加长路径前缀 return Path(f'\\\\?\\{path.resolve()}') return path # 使用示例 output_dir = Path('../Trained_Models/Differential_gene_analysis/A Kidney Cancer Transcriptome Molecular Signature Identifies Tumors with Tumor Thrombus/Models train on TCGA data and test on Rodriguez data/Oct-XX-20XX') output_dir = get_compatible_path(output_dir) joblib.dump(model, output_dir / 'RandomForest_TumorThrombus_104.joblib')
3. 简化路径/文件名
临时应急方案:缩短深层目录的名称(比如用缩写)或简化文件名,确保完整路径长度不超过260字符。可以用以下代码查看当前路径总长度:
target_path = output_dir / 'RandomForest_TumorThrombus_104.joblib' print(f"路径总长度:{len(str(target_path))}")
内容的提问来源于stack exchange,提问作者Ramiro Ramirez
相关产品推荐
相关产品推荐

