每当我试图使用它们来删除包含内容的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行

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

推荐答案

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

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

回答你的问题:

os.removedirsos.rmdir是否仅用于删除空目录?

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


下面是官方Python文档中的描述,它清楚地说明了这一点.

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

删除目录路径.Only works when the directory is empty,否则将引发OSError.为了删除整个目录树,shutil.可以使用rmtree().

os.removedirs(name)

递归删除目录.与rmdir()类似,只是如果成功删除了叶目录,removedirs()会try 连续删除路径中提到的每个父目录,直到出现错误(该错误会被忽略,因为它通常意味着父目录不是空的).例如,操作系统.removedirs('foo/bar/baz')将首先删除目录'foo/bar/baz',然后删除'foo/bar'和'foo'if they are empty.如果无法成功删除叶目录,则引发OSError.

Python-3.x相关问答推荐

如何在python中有效地使用多处理和pytube库来加快下载速度?

DuckDB:带有嵌套对象的星形表达式

为什么我无法在django中按月筛选事件?

Strawberry FastAPI:如何调用正确的函数?

使用 Fetch 提交表单到 Django 视图

如何统计一个值连续出现的次数?

attrs 将 list[str] 转换为 list[float]

使用gekko python的混合整数非线性规划

段落中句子的索引

没有可重定向到的 URL.提供一个 url 或在模型上定义一个 get_absolute_url 方法

如何通过python打开文件

如何在 Python 3 中通过 IP 获取 WhoIs 信息?

Python过滤器函数 - 单个结果

所有 Python dunder 方法的列表 - 您需要实现哪些方法才能正确代理对象?

为 True 相交两个布尔数组

从 IPython 重新加载 Python 扩展模块

Python 3 - Zip 是 pandas 数据框中的迭代器

使用完整路径激活 conda 环境

当默认 pip 为 pip2 时,升级 pip3 的正确格式是什么?

新项目:Python 2 还是 Python 3?