最新消息:

windows下使用python删除包含只读且文件名过长的文件夹

Python 大步 735浏览 0评论
今天删除一个demo项目,windows提醒我说文件名过长。那就写个python脚本删除:
python版本为3.4,使用pathlib库。
文件不能删除的原因有两个:一个是文件名太长,二是文件是只读模式。
开始是这样写的:

 

结果报错:FileNotFoundError: [WinError 3] 系统找不到指定的路径。: 'F:\\Downloads\\Building Adaptive Android Apps with Fragments\\Exercise Files\\Solutions\\03_MultiScreen\\HanselAndPetalSupport\\build\\intermediates\\exploded-aar\\com.android.support\\appcompat-v7\\19.1.0\\res\\drawable\\abc_list_selector_background_transition_holo_dark.xml'
看这报错,并非是找不到文件,而是因为整个路径太长了。
见微软的官方文档:https://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx#maxpath
windows下最长的路径是256个字符,如果超过这个限制,则无法使用普通的方法删除。必须在文件名路径前加上“\\?\”。如: "\\?\D:\very long path"
那么,我们就需要对上面的脚本进行略微的修改,如下:

 

然后就成功删除了。
当然,我们也可以使用shutil来删除,不过也必须先去掉文件的只读属性,然后在路径前加上“\\?\”,如下:
我对比了以前写的java的删除脚本,发现java没这么麻烦,无需添加“\\?\”。

转载请注明:大步's Blog » windows下使用python删除包含只读且文件名过长的文件夹

SiteMap