如何在 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 中删除(移除)文件和目录 的相关文章

随机推荐

  • 基于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