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

时间:2015-02-13 01:45:24

标签: python windows directory

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

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

  

WindowsError:[错误3]系统无法找到指定的路径:“文件夹\ CAAAAAAAAAB2iMan9VH4-0fxO4JOiT43bz9XVbQUoCcdOJTk1WRcPA ++ \ BwAAAAAAAACXEWzr-_xJujcfpbaeAa-zNMqou1c_EtOH1lGXEMaL8w ++ \ CAAAAAAAAACq0GkU9kGYNVDcaXAZ78ut8FSHTvE45Ra69qN495R6Fw ++ \ CgAAAAAAAAAsOJ6oX-y6iRcg2F3KB4HGi6kcWnU2QPO2CEKsJUA4-G ++

是否有可以用来删除该目录的函数?

感谢。

1 个答案:

答案 0 :(得分:0)

正如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)

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

这个链接让我很清楚:https://github.com/nerdvegas/rez/issues/436