Python Win32 文件名长度的解决方法

11 投票
3 回答
7940 浏览
提问于 2025-04-16 03:13

我发现当文件路径的长度超过255个字符时,即使文件名本身只有10个字符(剩下的部分是目录路径),你也无法使用open(filepath)来打开这个文件。

有没有什么办法可以解决这个问题呢?(在win32上使用python 2.6)

3 个回答

2

从Windows 10版本1607开始,你可以通过修改注册表来取消这个限制。具体来说,你需要找到这个注册表键:Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled,然后把它的值设置为1

下面是一个用来启用长路径的Powershell命令:

New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" `
-Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force

这里有Windows的相关文档可以参考

2

在Windows操作系统中,有一个简单的方法可以用来创建一个虚拟驱动器,这个方法就是使用DOS的SUBST命令。通过这个命令,你可以把某个文件夹当作一个驱动器来使用。

SUBST Q: C:\really\long\path\name\full\of\sub\directories

这样一来,你就可以通过 Q:filename 的方式来访问那个文件夹里的文件了。

19

最简单的方法是在路径前面加上 \\\\?\\。这个做法会让一些路径的处理方式变得不同,但我觉得影响不大。

另外,我还想说,在使用 Python 2.7 的 32 位 Windows Server 2003 上,我需要用带前缀的 Unicode 路径(比如 u"\\\\\\\\?\\\\"ur"\\\\?\\"),因为如同之前提到的,某些不支持 Unicode 的 API 函数即使加了前缀,仍然可能会受到 MAX_PATH 长度的限制。

例如,ur"\\\\?\\c:\temp\....\abc.txt"

撰写回答