删除并列出超出字符限制的目录

Pro*_*ess 5 python windows directory

我创建了一个超出字符限制的目录,并在目录前添加了“\\?\”,但我无法使用 删除它shutil.rmtree或使用 列出它os.walk

我收到以下错误shutil.rmtree("folder")

WindowsError: [错误 3] 系统找不到指定的路径:'folder\CAAAAAAAAAB2iMan9VH4-0fxO4JOiT43bz9XVbQUoCcdOJTk1WRcPA++\BwAAAAAAAACXEWzr-_xJujcfpbaeAa-zNMqou1c_EtOH1lGXEMaL8w++\CAAAAAAAAACq0GkU9kGYNVD caXAZ78ut8FSHTvE45Ra69qN495R6Fw++\CgAAAAAAAAAsOJ6oX-y6iRcg2F3KB4HGi6kcWnU2QPO2CEKsJUA4-g++'

我可以使用一个函数来删除该目录吗?

谢谢。

小智 1

正如eryksun所指出的,以及ivan_pozdeev链接的页面上的链接的更多详细信息,解决方案总结如下:

如果路径长度超过 260 个字符,则shutil.rmtree无法删除该文件。

我们假设

directory = "some path that is more than 260 characters"

尝试shutil.rmtree(directory)将失败并出现*** WindowsError: [Error 3] The system cannot find the path specified: "some path that is more than 260 characters"错误。目前尚不清楚该文件是否存在以及路径长度是真正的问题。

解决方案是将\\?\我为任意路径所做的路径添加到前面:

shutil.rmtree(ur'\\?\ '.strip()+ directory, onerror=onerror)
Run Code Online (Sandbox Code Playgroud)

请注意,即使使用r''语法,字符串也可能不会以斜杠结尾,因此我通过添加空格然后对strip()字符串进行 -ing 来解决此问题。

这个链接让我明白了一切: https: //github.com/nerdvegas/rez/issues/436