【发布时间】:2015-06-15 22:56:24
【问题描述】:
在 Windows 下运行 Python 编程时遇到问题。我需要使用超过 256 个或 whatsathelimit 个字符的文件路径。 现在,我基本上已经阅读了两种解决方案:
- 使用来自 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 中工作的解决方案
EDIT2:问题Python long filename support broken in Windows 确实给出了带有“魔术前缀”的答案,我在这个问题中说我知道。我不知道如何使用它。正如我在上面所写的,我试图将它添加到路径中,但它失败了。
【问题讨论】:
-
Python long filename support broken in Windows 的可能副本。它有一个不同的字符串要前置。你试过用那个字符串吗?
-
@Pureferret 是的,但接受的答案正是我无法完成的工作:D 好吧,我在这里的字符串与那里的字符串相同,但是这个字符串被转义了。
-
另外,这是一个使用kernal32.dll的解决方案,不确定你是否看过这个版本:stackoverflow.com/q/11420689/1075247
-
所以您尝试过
"\\?\"而不仅仅是"\\\\?\\"? -
一个重要的技巧:如果你使用 Python 2.x,你的长文件名必须是
unicode而不是str类型,所以前缀必须这样写:u'\\\\?\\UNC\\'