前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Python中删除(删除)文件和目录

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

原创
作者头像
用户5005176
修改2021-08-10 10:25:09
12.8K0
修改2021-08-10 10:25:09
举报
文章被收录于专栏:网站知识

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

本教程说明了如何使用ospathlibshutil模块中的功能删除文件和目录。

删除文件

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

os模块提供了一种与操作系统交互的便携式方法。 该模块可用于Python 2和3。

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

代码语言:javascript
复制
import os

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

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

代码语言:javascript
复制
import os

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

如果指定的文件不存在,则会引发FileNotFoundError错误。 os.remove()os.unlink()都只能删除文件,不能删除目录。 如果给定的路径指向目录,则将引发IsADirectoryError错误。

删除文件需要对包含文件的目录具有写和执行权限。 否则,您会得到PermissionError错误。

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

代码语言:javascript
复制
import os

file_path = '/tmp/file.txt'

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

pathlib模块在Python 3.4及更高版本中可用。 如果要在Python 2中使用此模块,可以使用pip进行安装。 pathlib提供了一个面向对象的界面,用于处理不同操作系统的文件系统路径。

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

代码语言:javascript
复制
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()os.unlink()也可以用于删除符号链接。

模式匹配

您可以使用 glob 模块根据模式匹配多个文件。 例如,要删除/tmp目录中的所有.txt文件,可以使用以下命令:

代码语言:javascript
复制
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))

要递归删除/tmp目录中的所有.txt文件及其下的所有子目录,请将recursive=True参数传递给glob()函数,并使用**模式:

代码语言:javascript
复制
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))

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

代码语言:javascript
复制
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()pathlib.Path.rmdir()删除一个空目录,并使用shutil.rmtree()删除一个非空目录。

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

代码语言:javascript
复制
import os

dir_path = '/tmp/img'

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

或者,您可以使用pathlib模块删除目录:

代码语言:javascript
复制
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))

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

使用shutil.rmtree()功能,您可以删除包含其内容的给定目录:

代码语言:javascript
复制
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()pathlib.Path.rmdir()删除空目录以及如何shutil.rmtree()递归删除目录以及 所有的内容。

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 删除文件
    • 模式匹配
    • 结论
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档