如何删除目录? os.removedirs 和 os.rmdir 是不是只用于删除空目录? [复制]

Posted

技术标签:

【中文标题】如何删除目录? os.removedirs 和 os.rmdir 是不是只用于删除空目录? [复制]【英文标题】:How to remove a directory? Is os.removedirs and os.rmdir only used to delete empty directories? [duplicate]如何删除目录? os.removedirs 和 os.rmdir 是否只用于删除空目录? [复制] 【发布时间】:2018-07-31 06:12:25 【问题描述】:

每当我尝试使用它们来删除带有东西的目录时,我都会收到此错误消息

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 行,已删除 rmdir(名称) OSError: [Errno 66] 目录不为空:'new-file'

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

【问题讨论】:

【参考方案1】:

您应该使用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。

【讨论】:

以上是关于如何删除目录? os.removedirs 和 os.rmdir 是不是只用于删除空目录? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

os模块

os. 模块

OS模块

python删除文件

os模块

os模块