如何删除目录?os.removedirs和os.rmdir仅用于删除空目录吗?

Mustafa 10 python python-2.7 python-3.x

每当我尝试使用它们删除其中的东西时,我会收到此错误消息

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",第170行,在removedirs中rmdir(名称)OSError:[Errno 66]目录不为空:'new-file'

但是我想我看到人们使用这些命令来删除非空的目录,那么我做错了什么?谢谢

Moinuddin Qu.. 10

您应该使用shutil.rmtree递归删除目录:

import shutil
shutil.rmtree('/path/to/your/dir/')

回答你的问题:

os.removedirsos.rmdir只用于删除空目录?

是的,它们只能用于删除空目录.


以下是官方Python文档中的描述,其中显然有统计数据.

os.rmdir(path, *, dir_fd=None)

删除(删除)目录路径.仅在目录为空时才起作用,否则引发OSError.为了删除整个目录树,可以使用shutil.rmtree().

os.removedirs(name)

递归删除目录.工作方式类似rmdir(),只是,如果叶目录被成功移除,removedirs()尝试连续地除去,直到引发错误在路径中提到的每个父目录(它被忽略,因为它通常是指一个父目录不为空).例如,os.removedirs('foo/bar/baz')将首先删除目录'foo/bar/baz',然后删除'foo/bar'和'foo'(如果它们为空).如果无法成功删除叶目录,则引发OSError.