在使用Windows运行的Python编程时遇到问题。我需要使用超过256或whatsathelimit字符的文件路径。 现在,我基本上阅读了两个解决方案:
这很好,但我无法使用它,因为我需要以某种方式使用路径
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中的示例相同的方式使用它。
OR
还有其他办法吗?
编辑:我需要在Python 2.7中使用该解决方案
EDIT2:问题Python long filename support broken in Windows确实给出了'魔术前缀'的答案,我说我在这个问题中知道了。我不知道的是我如何使用它。我已经尝试将其添加到路径中,但它只是失败了,正如我上面所写的那样。
答案 0 :(得分:12)
好吧,似乎一如既往,在我认真询问有人之后,我已经找到了解决我一周二十分钟的问题的答案。
所以我发现我需要确保正确完成两件事:
/*.*
,这是一个正斜杠,这很糟糕。希望至少有人会觉得这很有用。
答案 1 :(得分:3)
让我为那些寻求直接答案的人简化一下:
u
,例如u'C:\\path\\to\\file'
\\\\?\\
开头的\\?\
(转义为u'\\\\?\\C:\\path\\to\\file'
)开头/
-> \\
答案 2 :(得分:1)
py 3.8.2
# Fix long path access:
import ntpath
ntpath.realpath = ntpath.abspath
# Fix long path access.
就我而言,这解决了从长路径运行脚本的问题。 (https://developers.google.com/drive/api/v3/quickstart/python) 但这不是通用解决方案。 看起来ntpath.realpath实现有问题。该代码将其替换为虚拟对象。