如何在 Python 中删除(移除)文件和目录

2023-10-31

Python 有一些内置模块,允许您删除文件和目录。

本教程介绍如何使用以下函数删除文件和目录os, pathlib, and shutil模块。

删除文件#

在Python中你可以使用os.remove(), os.unlink(), pathlib.Path.unlink()删除单个文件。

The os模块提供了一种与操作系统交互的可移植方式。该模块适用于 Python 2 和 3。

删除单个文件os.remove(),将文件的路径作为参数传递:

import os

file_path = '/tmp/file.txt'
os.remove(file_path)

os.remove() and os.unlink()函数在语义上是相同的:

import os

file_path = '/tmp/file.txt'
os.unlink(file_path)

如果指定文件不存在 a FileNotFoundError抛出错误。两个都os.remove() and os.unlink()只能删除文件,不能删除目录。如果给定的路径指向一个目录,它们将抛出IsADirectoryError error.

删除文件需要对包含该文件的目录具有写入和执行权限。否则,你会得到PermissionError error.

为了避免删除文件时出错,可以使用异常处理来捕获异常并发送正确的错误消息:

import os

file_path = '/tmp/file.txt'

try:
    os.remove(file_path)
except OSError as e:
    print("Error: %s : %s" % (file_path, e.strerror))

The pathlib模块在 Python 3.4 及更高版本中可用。如果你想在 Python 2 中使用这个模块,你可以使用 pip 安装它。pathlib提供面向对象的接口,用于处理不同操作系统的文件系统路径。

要删除文件,请使用pathlib模块,创建一个Path指向文件的对象并调用unlink()对象上的方法:

from pathlib import Path

file_path = Path('/tmp/file.txt')

try:
    file_path.unlink()
except OSError as e:
    print("Error: %s : %s" % (file_path, e.strerror))

pathlib.Path.unlink(), os.remove(), and os.unlink()也可以用来删除符号链接 .

模式匹配#

您可以使用glob模块根据模式匹配多个文件。例如,删除所有.txt文件在/tmp目录,你会使用这样的东西:

import os
import glob

files = glob.glob('/tmp/*.txt')

for f in files:
    try:
        f.unlink()
    except OSError as e:
        print("Error: %s : %s" % (f, e.strerror))

递归删除所有文件.txt in the /tmp目录及其下的所有子目录,传递recursive=True论证glob()函数并使用“**”模式:

import os
import glob

files = glob.glob('/tmp/**/*.txt', recursive=True)

for f in files:
    try:
        os.remove(f)
    except OSError as e:
        print("Error: %s : %s" % (f, e.strerror))

The pathlib模块包括两个 glob 函数,glob() and rglob()匹配给定目录中的文件。glob()仅匹配顶级目录中的文件。rglob()递归地匹配目录和所有子目录中的所有文件。以下示例代码删除所有.txt文件在/tmp目录:

from pathlib import Path

for f in Path('/tmp').glob('*.txt'):
    try:
        f.unlink()
    except OSError as e:
        print("Error: %s : %s" % (f, e.strerror))

删除目录(文件夹)#

在Python中你可以使用os.rmdir() and pathlib.Path.rmdir()删除一个空目录并shutil.rmtree()删除非空目录。

以下示例显示如何删除空目录:

import os

dir_path = '/tmp/img'

try:
    os.rmdir(dir_path)
except OSError as e:
    print("Error: %s : %s" % (dir_path, e.strerror))

或者,您可以使用以下命令删除目录pathlib module:

from pathlib import Path

dir_path = Path('/tmp/img')

try:
    dir_path.rmdir()
except OSError as e:
    print("Error: %s : %s" % (dir_path, e.strerror))

The shutil模块允许您对文件和目录执行许多高级操作。

随着shutil.rmtree()函数您可以删除给定目录及其内容:

import shutil

dir_path = '/tmp/img'

try:
    shutil.rmtree(dir_path)
except OSError as e:
    print("Error: %s : %s" % (dir_path, e.strerror))

参数传递给shutil.rmtree()不能是目录的符号链接。

结论#

Python 提供了几个用于处理文件的模块。

我们已经向您展示了如何使用os.remove(), os.unlink(), pathlib.Path.unlink()删除单个文件,os.rmdir() and pathlib.Path.rmdir()删除一个空目录并shutil.rmtree()递归删除目录及其所有内容。

删除文件或目录时要格外小心,因为文件一旦删除,就无法轻易恢复。

如果您有任何问题或反馈,请随时发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Python 中删除(移除)文件和目录 的相关文章

  • 将tensorflow 2.0 BatchDataset转换为numpy数组

    我有这个代码 train images test images tf keras datasets mnist load data train dataset tf data Dataset from tensor slices train
  • 在 Python 中使用 Selenium 处理“接受 Cookie”弹出窗口

    我一直在尝试用硒抓取这个房地产网站的一些信息 但是 当我访问该网站时 我需要接受 cookie 才能继续 这仅在机器人访问网站时发生 而不是在我手动执行时发生 当我尝试通过 xpath 或 id 查找相应的元素时 正如我在手动检查页面时找到
  • 行未从树视图复制

    该行未在树视图中复制 我在按行并复制并粘贴到未粘贴的任何地方后制作了弹出复制 The code popup tk Menu tree opportunity tearoff 0 def row copy item tree opportun
  • 一次将Python dict的内容分配给多个变量?

    我想做这样的事情 def f return a 1 b 2 c 3 a b f or a b f IE 这样 a 被分配为 1 b 被分配为 2 并且 c 是未定义的 这与此类似 def f return 1 2 a b f 依赖于变量名称
  • 如何使用Python将WebP图像转换为Gif?

    我已经尝试过这个 from PIL import Image im Image open this webp im save that gif gif save all True 这给了我这个错误 类型错误 不支持的操作数类型 tuple
  • python 中分割字符串以获得一个值?

    需要帮助 假设我在名为 input 的变量中有一个字符串 Sam Person name kind input split 通过执行上述操作 我得到两个具有不同字符串 Sam 和 Person 的变量 有没有办法只获取第一个值 name S
  • Python BeautifulSoup XML 解析

    我编写了一个简单的脚本来使用 BeautifulSoup 模块解析 XML 聊天日志 标准 soup prettify 工作正常 只是聊天日志中有很多绒毛 您可以在下面看到我正在使用的脚本代码和一些 XML 输入文件 Code import
  • Pandas重置索引未生效[重复]

    这个问题在这里已经有答案了 我不确定我在哪里误入歧途 但我似乎无法重置数据帧上的索引 当我跑步时test head 我得到以下输出 正如您所看到的 数据帧是一个切片 因此索引超出范围 我想做的是重置该数据帧的索引 所以我跑test rese
  • 错误:permission_manager_qt.cpp(82) 不支持的权限类型:13

    我正在开发具有内置浏览器功能的 python 代码 PyQt 5 13 import sys from PyQt5 QtCore import from PyQt5 QtGui import from PyQt5 QtWidgets imp
  • 如果字段值在外部列表中,Django 会注释布尔值

    想象一下我有这个 Django 模型 class Letter models Model name models CharField max length 1 unique True 还有这个列表 vowels a e i o u 我想查询
  • 在径向(树)网络x图中查找末端节点(叶节点)

    给定下图 是否有一种方便的方法来仅获取末端节点 我所说的端节点是指那些具有一个连接边的到节点 我认为这些有时被称为叶节点 G nx DiGraph fromnodes 0 1 1 1 1 1 2 3 4 5 5 5 7 8 9 10 ton
  • 如何通过双击在浏览器中打开 ipynb 文件

    以前 我安装了 Canopy 当时 我只需双击 ipynb 文件并在浏览器中打开它们即可 但是 后来我需要Anaconda 一旦我安装了它 这个功能就没有了 现在我只希望能够简单地双击 ipynb 文件 然后该文件就会在 Firefox 中
  • 为什么我用 beautifulSoup 刮的时候有桌子,但没有 pandas

    尝试抓取条目页面转换为制表符分隔格式 主要拉出序列和 UniProt 登录号 当我跑步时 url www signalpeptide de index php sess m listspdb bacteria s details id 10
  • 将 Pandas 列中的列表拆分为单独的列

    这是我在 pandas 数据框中的 特征 列 Feature Cricket 82379 Kabaddi 255 Reality 4751 Cricket 15640 Wildlife 730 LiveTV 13 Football 4129
  • Pandas Dataframe:将包含列表的行扩展到多行,并为所有列提供所需的索引

    我在 pandas 数据框中有时间序列数据 索引为测量开始时的时间 列中包含以固定采样率记录的值列表 连续索引 列表中元素数量的差异 这是它的样子 Time A B Z 0 1 2 3 4 1 2 3 4 2 5 6 7 8 5 6 7 8
  • 查找给定节点的最高权重边

    我在 NetworkX 中有一个有向图 边缘的权重从 0 到 1 表示它们发生的概率 网络连通性非常高 所以我想修剪每个节点的边缘 只保留最高概率的节点 我不确定如何迭代每个节点并仅保留最高权重in edges在图中 有没有一个networ
  • Scipy 稀疏 Cumsum

    假设我有一个scipy sparse csr matrix代表下面的值 0 0 1 2 0 3 0 4 1 0 0 2 0 3 4 0 我想就地计算非零值的累积和 这会将数组更改为 0 0 1 3 0 6 0 10 1 0 0 3 0 6
  • Python组合目录中的所有csv文件并按日期时间排序

    我有 2 年的每日数据分成每月文件 我想将所有这些数据合并到一个按日期和时间排序的文件中 我正在使用的代码组合了所有文件 但不按顺序 我正在使用的代码 import pandas as pd import glob os import cs
  • 在 Python 模块中使用 InstaLoader

    我正在尝试使用 Instaloader 下载与主题标签相关的照片以进行图像分析 我在GitHub存储库中找到了一个全面的方法 如何在终端中执行它 但是 我需要将脚本集成到Python笔记本中 这是脚本 instaloader no vide
  • 使用 Python 生成类似于 Messenger 或 kik 代码的圆形二维码

    我可以使用 Python 生成圆形 QR 码 就像 Facebook Messenger 或 kik 使用的那样吗 我访问了很多网站 但找不到这种类型的二维码 默认情况下 Python 生成方形 QR 码 但在我的项目中我想要圆形 QR 码

随机推荐

  • 基于PyQT5的学生成绩管理系统(运行简单,简单有文档,带注释,含源码)

    自己做的项目 全CSDN唯一 禁止转载 基于pyqt5的学生成绩管理 带登录注册 基本的学生信息的增加 修改 删除 查询和选课 课程信息的增加 修改 删除 查询 成绩的添加 修改 查询等功能 用pycharm导入 安装依赖包 配置好数据库就
  • Java运算符、流程控制

    Java运算符 流程控制 运算符 算术运算符 public class Demo1 public static void main String args 算术运算符 int x 2046 x x 100 100 System out pr
  • 如何检查 MacOS 版本(GUI+CLI)

    macOS 12 是 Apple 团队的最新版本 它的代号是蒙特雷 源自蒙特雷南部海岸的一片未绘制地图的荒野地区 这是最先进的桌面操作系统 功能和美观达到了新的水平 本教程将介绍如何从桌面和命令行界面检查 macOS 版本 检查 MacOS
  • 如何在 Linux 中编译和安装最新的 Redis

    Redis 是一种开源内存数据结构存储 可用作数据库 缓存和消息代理 它以其高性能 可扩展性和易用性而闻名 在本文中 我们将指导您完成在 Linux 上编译和安装最新 Redis 版本的过程 在开始之前 请确保您拥有 Linux 服务器的管
  • 如何计算 Linux 中文件的行数

    有时您可能需要计算 Unix Linux 系统中文件的总行数 本教程帮助您通过命令行使用多种方法来统计 Linux 系统中文件的行数 计算行数wc Command The wc命令是 Unix Linux 系统的 字计数器 这是 Linux
  • 检查脚本是否在 Linux 中以 root 用户身份运行

    有时 shell 脚本需要以 root 用户身份运行才能以管理员权限执行某些任务 通常 可以使用 Sudo 命令来完成该任务 如果在某些情况下您仍然需要强制用户以 root 用户身份运行脚本 您可以向脚本添加代码来检查脚本是否以 root
  • 如何在 CentOS/RHEL 7.5 和 6.9 上安装 PHP 7.2、Apache 2.4、MySQL 5.6

    PHP团队已经发布了升级版本7 2 与 5 X 版本相比 它有许多变化和改进 本文将帮助您在 CentOS RHEL 7 6 操作系统上安装 PHP 7 Apache 2 4 和 MySQL 5 6 本教程已在CentOS 7 4上进行测试
  • 如何清除 Windows 中的 ASP.NET 临时文件

    开发 ASP NET 应用程序时 框架会编译并存储临时文件以提高性能 随着时间的推移 这些文件可能会累积并占用大量存储空间 定期清除 ASP NET 临时文件可以帮助维护您的开发环境并释放宝贵的磁盘空间 本文提供了有关如何在 Windows
  • 允许 ssm:GetParameter 的 AWS IAM 策略

    AWS Systems Manager SSM Parameter Store 提供集中式安全存储解决方案 用于管理您的配置数据 机密和应用程序设置 使用 SSM Parameter Store 时可能执行的关键操作之一是检索参数的值 在本
  • PHP 技巧:使用分隔符将字符串拆分为数组

    在 PHP 中 将字符串拆分为数组是一项常见任务 可以使用各种函数和技术来完成 这 explode 函数是一个方便高效的选项 它允许您根据分隔符将字符串拆分为数组 在本文中 我们将探讨如何在 PHP 中使用explode 函数将字符串拆分为
  • Visual Studio Code 中 Git 集成的快捷方式

    Git 是一种流行的版本控制系统 开发人员使用它来跟踪代码更改并与其他人在项目上进行协作 Visual Studio Code VS Code 具有内置的 Git 集成 可以轻松地直接从编辑器管理和提交更改 在本文中 我们将讨论 Visua
  • 如何通过 SSH 下载和上传文件

    SSH 是访问远程服务器最安全的协议 它通过通信通道提供最高级别的端到端数据安全性 这SCP 安全复制 命令使用 SSH 协议在远程和本地服务器之间复制文件 远程服务器必须有正在运行的 SSH 服务器 本教程将帮助您了解通过 SSH 协议下
  • 如何在 CentOS/RHEL 7 上创建没有 Shell 访问权限的 SFTP 用户

    本教程将帮助您在 CentOS 和 RedHat 系统上创建仅 SFTP 用户 无 ssh 访问权限 用户只能通过SFTP访问连接服务器 并允许访问指定目录 用户无法通过 SSH 访问服务器 按照以下教程创建仅限 sftp 的帐户 第 1
  • 如何在 Linux 中编译和运行 C/C++ 程序

    C 是一种强大的结构化编程语言 用于开发系统软件 根据设计 C 提供了可以有效映射到典型机器指令的结构 它是由丹尼斯 里奇在贝尔实验室 C 程序源是自由格式的文本 使用分号作为语句终止符 使用大括号对条件 函数或循环等语句块进行分组 C 是
  • 如何在 CentOS 7 上安装 Drupal

    Drupal 是全球领先的开源 CMS 平台之一 它灵活 可扩展 可用于构建不同类型的网站 从小型个人博客到大型企业 政治和政府网站 在本教程中 我们将解释如何在 CentOS 7 上安装 Drupal 8 6 安装 Drupal 的方法有
  • 如何删除 Docker 容器、映像、卷和网络

    Docker 是一个开源容器化平台 允许您快速构建 测试和部署应用程序作为几乎可以在任何地方运行的便携式容器 使用 Docker 时 您可以快速积累大量未使用的对象 这些对象会消耗大量磁盘空间并使 Docker 命令生成的输出变得混乱 Do
  • 如何删除 Git 中未跟踪的文件

    Git 工作目录中的文件可以是跟踪的 也可以是非跟踪的 跟踪的文件是 Git 知道的已添加和提交的文件 跟踪的文件可以是未修改的 已修改的或暂存的 工作目录中的所有其他文件都未被跟踪 并且 git 不知道这些文件 有时 您的 git 工作目
  • 如何在 Bash 中逐行读取文件

    在编写 Bash 脚本时 有时您会发现自己需要逐行读取文件 例如 您可能有一个文本文件 其中包含应由脚本处理的数据 在本教程中 我们将讨论如何在 Bash 中逐行读取文件 逐行读取文件语法 逐行读取文件的最通用语法如下 while IFS
  • 如何在 CentOS 8 上安装 MySQL

    MySQL是最流行的开源关系数据库管理系统 最新版本的 MySQL 数据库服务器 8 0 版可从默认的 CentOS 8 存储库安装 MySQL 8 0引入了许多新功能和更改 这使得一些应用程序与该版本不兼容 在选择要安装的 MySQL 版
  • 如何在 Python 中删除(移除)文件和目录

    Python 有一些内置模块 允许您删除文件和目录 本教程介绍如何使用以下函数删除文件和目录os pathlib and shutil模块 删除文件 在Python中你可以使用os remove os unlink pathlib Path