Python标准库shutil中rmtree()使用回调函数
这段代码目的是删除包含只读文件的文件夹,主要演示回调函数的用法。
>>> import os
>>> import stat
>>> import shutil
>>> def remove_readonly(func, path, _): #定义回调函数
os.chmod(path, stat.S_IWRITE) #删除文件的只读属性
func(path) #再次执行删除操作
>>> shutil.rmtree('D:\\des_test') #文件夹中有个只读文件,删除失败
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
shutil.rmtree('D:\\des_test')
File "C:\Python35\lib\shutil.py", line 488, in rmtree
return _rmtree_unsafe(path, onerror)
File "C:\Python35\lib\shutil.py", line 383, in _rmtree_unsafe
onerror(os.unlink, fullname, sys.exc_info())
File "C:\Python35\lib\shutil.py", line 381, in _rmtree_unsafe
os.unlink(fullname)
PermissionError: [WinError 5] 拒绝访问。: 'D:\\des_test\\test1.txt'
>>> shutil.rmtree('D:\\des_test', οnerrοr=remove_readonly) #指定回调函数,删除成功