在Python中,当运行shutil.rmtree
删除一个包含只读文件的文件夹时,会打印以下异常:
File "C:\Python26\lib\shutil.py", line 216, in rmtree
rmtree(fullname, ignore_errors, onerror)
File "C:\Python26\lib\shutil.py", line 216, in rmtree
rmtree(fullname, ignore_errors, onerror)
File "C:\Python26\lib\shutil.py", line 216, in rmtree
rmtree(fullname, ignore_errors, onerror)
File "C:\Python26\lib\shutil.py", line 216, in rmtree
rmtree(fullname, ignore_errors, onerror)
File "C:\Python26\lib\shutil.py", line 216, in rmtree
rmtree(fullname, ignore_errors, onerror)
File "C:\Python26\lib\shutil.py", line 216, in rmtree
rmtree(fullname, ignore_errors, onerror)
File "C:\Python26\lib\shutil.py", line 216, in rmtree
rmtree(fullname, ignore_errors, onerror)
File "C:\Python26\lib\shutil.py", line 221, in rmtree
onerror(os.remove, fullname, sys.exc_info())
File "C:\Python26\lib\shutil.py", line 219, in rmtree
os.remove(fullname)
WindowsError: [Error 5] Access is denied: 'build\\tcl\\tcl8.5\\msgs\\af.msg'
在文件属性对话框中查看时,我注意到af.msg
文件被设置为只读。
那么问题来了:最简单的解决方法是什么 - 假设我的意图是在Windows上执行与rm -rf build/
相当的操作?(不使用像unxutils或cygwin这样的第三方工具-因为此代码旨在在安装有Python 2.6 w / PyWin32的纯Windows上运行)
shutil.rmtree
使用os.remove
来删除文件。os.remove
可以成功删除只读文件(至少在 Unix 上是这样)。如果文件正在使用中,则os.remove
无法在 Windows 上删除该文件。 - jfs