Python 如何删除目录?os.removedirs和os.rmdir是否仅用于删除空目录?
每当我试图使用它们来删除包含内容的dir时,我都会收到此错误消息Python 如何删除目录?os.removedirs和os.rmdir是否仅用于删除空目录?,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,每当我试图使用它们来删除包含内容的dir时,我都会收到此错误消息 import os os.chdir('/Users/mustafa/Desktop') os.makedirs('new-file/sub-file') os.removedirs('new-file') “/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.py”,removedirs中的第170行 rmdir(姓名) OSError:[Er
import os
os.chdir('/Users/mustafa/Desktop')
os.makedirs('new-file/sub-file')
os.removedirs('new-file')
“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.py”,removedirs中的第170行
rmdir(姓名)
OSError:[Errno 66]目录不为空:“新文件”
然而,我认为我看到人们使用这些命令来删除不是空的目录,那么我做错了什么?谢谢您应该使用递归删除目录:
import shutil
shutil.rmtree('/path/to/your/dir/')
回答你的问题:
os.removedirs
和os.rmdir
是否仅用于删除空目录
是的,它们只能用于删除空目录
下面是官方Python文档中的描述,它清楚地说明了这一点 删除目录路径仅在目录为空时工作,否则将引发OSError。为了删除整个目录树,可以使用shutil.rmtree() 递归删除目录。与
rmdir()
类似,不同的是,如果成功删除了叶目录,removedirs()会尝试连续删除路径中提到的每个父目录,直到引发错误(该错误被忽略,因为它通常意味着父目录不是空的)。例如,os.removedirs('foo/bar/baz')将首先删除目录'foo/bar/baz',然后删除'foo/bar'和'foo'(如果它们为空)。如果无法成功删除叶目录,则引发OSError