在Windows下编写Python程序时,我遇到了一个问题。我需要处理长于256个字符或其他限制的文件路径。
现在,我已经了解了大约两种解决方案:
- 使用kernel32.dll中的GetShortPathName并以这种方式访问文件。
这很好,但我无法使用它,因为我需要以某种方式使用这些路径。
shutil.rmtree(short_path)
其中short_path是一个非常短的路径(类似于D:\tools\Eclipse
),而长路径出现在目录本身中(该死的Eclipse插件)。
- 在路径前面加上
"\\\\?\\"
我尝试了各种方式都没能让它起作用。以这种方式尝试进行任何操作始终会导致错误WindowsError: [Error 123] The filename, directory name, or volume label syntax is incorrect: <path here>
。
所以我的问题是:如何使第二个选项起作用?我强调需要像在选项#1的示例中那样使用它。
或者
还有其他方法吗?
编辑:我需要在Python 2.7中使用解决方案
编辑2:问题Python长文件名支持在Windows中失效确实提供了带有“魔术前缀”的答案,并且我在此问题中说明我知道它。我不知道的事情是如何使用它。我尝试在路径前面添加它,但它失败了,就像我上面写的那样。
"\\?\\"
而不仅仅是"\\\\?\\"
吗? - AncientSwordRageunicode
类型而不是str
类型,因此前缀必须写成这样:u'\\\\?\\UNC\\'
。 - herve-guerin