【Python: shutil.rmtree() 报错-目录不是空的】
在使用 Python 进行文件操作时,我们经常会使用 shutil 库中的 rmtree() 方法删除目录。但是,在某些情况下,当我们尝试删除一个非空的目录时,rmtree() 方法会报错:[WinError 145] 目录不是空的。这种情况通常发生在我们没有将目录清空的情况下就试图删除该目录。
这个错误会让我们陷入困境,因为有时候我们无法手动删除该目录内的所有文件和子目录。幸运的是,Python 提供了一种简单而又灵活的方法来解决这个问题。
解决方法:
使用 Python 的 os 和 shutil 模块中的函数来递归删除目录及其内容。这种方法可以保证完全删除目录、子目录和文件,并且避免了使用 rmtree() 方法会出现的问题。
以下是 Python 代码示例:
import shutil
import os
def remove_dir(dir_path):
if os.path.isdir(dir_path):
shutil.rmtree(dir_path)
print("Directory removed successfully")
else:
print("Invalid directory path")
if __name__ == '__main__':
dir_path = 'example_dir'
remove_dir(dir_path)
代码中的 remove_dir() 函数使用了 shutil.rmtree() 来删除目录,但它首先检查目录