求助:Windows系统下OneDrive长路径写入文件触发FileNotFoundError的解决方法
求助:Windows系统下OneDrive长路径写入文件触发FileNotFoundError的解决方法
我最近碰到一个特别棘手的问题,想请各位大佬帮忙看看怎么解决:
我用的是最新版且已完全更新的Windows系统,最近发现只要在OneDrive的某个长路径下(具体是C:\Users\user\OneDrive - UniversityX XXXXXXXXXX XXXXXXXX\XXXXXXXXX这类带学校名称的长路径),不管是用VSCode运行Python代码:
file = "dataset.csv" with open(file, "w") as f: f.write(data)
还是用Matlab或者其他程序尝试保存文件,都会触发FileNotFoundError: [Errno 2] No such file or directory: 'dataset.csv'的错误,但把代码或程序放在其他短路径、非OneDrive的长路径下就完全正常。
我已经按照网上的方法在Windows注册表中开启了长路径设置,并且重启了电脑,但问题依然存在。有没有人知道这到底是哪里出问题了,该怎么修复呢?
以下是整理的可能解决思路,大家也可以补充:
- 检查OneDrive的「文件按需同步」设置:这个功能有时候会干扰长路径下的文件读写,右键任务栏的OneDrive图标→设置→账户→选择文件夹,尝试关闭「文件按需同步」,或者调整为「始终保留在此设备上」,重启OneDrive后再测试。
- 使用绝对路径+OneDrive别名:不要用相对路径,试试用Windows提供的OneDrive简化路径,比如
%USERPROFILE%\OneDrive - UniversityX...,在Python里可以用os.path.expandvars()来解析环境变量,代码改成类似这样:import os file_path = os.path.expandvars("%USERPROFILE%\OneDrive - UniversityX XXXXXXXXXX XXXXXXXX\XXXXXXXXX\dataset.csv") with open(file_path, "w") as f: f.write(data) - 确认文件夹权限:右键目标OneDrive文件夹→属性→安全选项卡,检查当前登录用户是否拥有「写入」权限,如果没有,点击「编辑」添加写入权限,应用后再尝试保存文件。
- 迁移OneDrive到更短的路径:从根源上解决长路径问题,右键OneDrive图标→设置→账户→「取消链接此PC」,然后重新链接时选择一个更短的本地路径(比如
C:\OneDrive),注意迁移前做好文件备份。 - 检查组策略的长路径设置:仅修改注册表可能不够,按下Win+R输入
gpedit.msc,依次导航到「计算机配置→管理模板→系统→文件系统→启用 Win32 长路径」,确保这个选项设置为「已启用」,之后重启电脑生效。
备注:内容来源于stack exchange,提问作者Coolgolf
相关产品推荐
相关产品推荐

