在Python中删除目录

2024-05-19 02:50:25 发布

您现在位置:Python中文网/ 问答频道 /正文

shutil.rmtree不会删除Windows上的只读文件。有一个与“rm-rf”等价的python吗?为什么?为什么这么痛?


Tags: 文件rmwindows等价rfrmtreeshutil
3条回答

另一种方法是将Windows上的rmtree定义为

rmtree = lambda path: subprocess.check_call(['cmd', '/c', 'rd', '/s', '/q', path])

shutil.rmtree可以使用一个错误处理函数,当它在删除文件时遇到问题时将调用该函数。您可以使用它强制删除有问题的文件。

灵感来自http://mail.python.org/pipermail/tutor/2006-June/047551.htmlhttp://techarttiki.blogspot.com/2008/08/read-only-windows-files-with-python.html

import os
import stat
import shutil

def remove_readonly(func, path, excinfo):
    os.chmod(path, stat.S_IWRITE)
    func(path)

shutil.rmtree(top, onerror=remove_readonly)

(我还没有测试过这个片段,但它应该足以让你开始)

如果从PyWin32导入win32api,可以使用:

win32api.SetFileAttributes(path, win32con.FILE_ATTRIBUTE_NORMAL)

使文件不再是只读的。

相关问题 更多 >

    热门问题