Python Win32 文件名长度的解决方法
我发现当文件路径的长度超过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
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"