Python有一些内置模块,可让您删除文件和目录。本教程说明了如何使用os,pathlib和shutil模块中的函数删除文件和目录。

删除文件

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

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

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

import os

file_path = '/tmp/linuxmi.txt'

os.remove(file_path)

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

import os

file_path = '/tmp/_cafenv-appconfig_'

os.unlink(file_path)

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

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

import os

file_path = '/tmp/_cafenv-appconfig_'

try:

    os.remove(file_path)

except OSError as e:

    print("Error:  %s : %s" % (file_path, e.strerror))

如下图:

Error: /tmp/_cafenv-appconfig_ : Operation not permitted

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

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

from pathlib import Path

file_path = Path('/tmp/linuxmi.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文件,您将使用以下内容:

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()函数,并使用``**`模式:

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文件:

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()删除一个非空目录。

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

import os

dir_path = '/tmp/linuxmi'

try:

    os.rmdir(dir_path)

except OSError as e:

    print("Error:  %s : %s" % (dir_path, e.strerror))

另外,您可以使用pathlib模块删除目录:

from pathlib import Path

dir_path = Path('/tmp/linuxmi')

try:

    dir_path.rmdir()

except OSError as e:

    print("Error: %s  : %s" % (dir_path, e.strerror))

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

使用shutil.rmtree()函数,您可以删除给定目录,包括其内容:

import shutil

dir_path = '/tmp/linuxmi'

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()来递归地删除目录及其所有内容。

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

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

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

热门产品

php编程基础教程.pptx|php编程培训,php,编程,基础,教程,pptx
php编程基础教程.pptx

历史上的今天:04月29日

热门专题

中源管业|中源管业,中源管业公司,中源管业有限公司,中源管业电话,中源管业地址,中源管业电力管,中源管业mpp电力管,中源管业cpvc电力管,中源管业pe穿线管
中源管业
综合高中|云南综合高中,昆明综合高中,综合高中能考本一吗,综合高中和普通高中的区别,综合高中是什么意思,综合高中能参加全国统一高考吗,综合高中可以考哪些大学,综合高中的学籍是什么
综合高中
昆明综合高中|昆明综合高中
昆明综合高中
云南高职单招|云南单招,云南单招网,云南高职单招网,云南高职单招,云南单招学校,云南单招培训
云南高职单招
大理科技管理学校|大理科技管理中等职业技术学校,大理市科技管理中等职业技术学校
大理科技管理学校
外贸网站建设|外贸网站建设,英文网站制作,英文网站设计,美国主机空间,外贸建站平台,多语言网站制作
外贸网站建设
小程序开发|微信小程序,小程序开发,小程序,小程序制作,微信小程序开发,小程序公司,小程序开发公司,分销,三级分销系统,分销系统
小程序开发
云南巨榕教育投资集团有限公司|云南巨榕教育投资集团有限公司,巨榕教育集团,巨榕教育
云南巨榕教育投资集团有限公司

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部