使用 Python 删除文件和文件夹

208 阅读3分钟

如果你觉得这篇文章对你有帮助,希望你能点赞加关注。

许多编程语言都有内置处理文件和文件夹的功能。Python 作为一种功能丰富的编程语言,同样也不例外,内置了许多用于处理文件和文件夹的模块和函数。

利用 Python 提供的 OSPathlib 模块,我们可以非常方便地创建、编辑、读取和删除文件和文件夹。

通过本教程,我们将学会如何使用 Python 删除文件和文件夹。

使用 OS 模块删除文件

要使用 OS 模块删除任意文件,可以使用它的 remove() 方法。我们需要在 remove() 方法中指定要删除文件的路径和文件名。需要注意的是,要使用 OS 模块首先需要导入它

下面的代码将删除当前文件夹中的 questions.py 文件:

import os

os.remove('questions.py')

如果删除的文件在其它文件夹中,则需要指定文件的完整路径,而不仅仅是文件名。

下面的代码向我们展示了如何删除 textFiles 文件夹中的 faq.txt 文件:

import os

os.remove('textFiles/faq.txt')

当我们试图删除一个不存在的文件时,Python 将抛出 FileNotFoundError 错误,并终止程序的执行。为了更好地处理这个问题,我们可以在删除文件之前先检查文件是否存在:

import os

# 指定要删除的文件路径
file_path = 'textFiles/faq.txt'

# 检查文件是否存在
if os.path.exists(file_path):
    os.remove(file_path)
    print('文件已删除')
else:
    print('文件不存在')

当然,我们也可以使用 try..except 来改进上面的代码:

import os

try:
    os.remove('textFiles/faq.txt')
    print('文件已删除')
except:
    print('文件不存在')

使用 Pathlib 模块删除文件

pathlib 是 Python 标准库中的一个模块,它提供了一种面向对象的方法来处理文件系统路径。我们同样也可以用它来处理文件。

pathlib 模块有一个 unlink() 方法,可以用来删除文件。我们首先需要用 pathlib.Path() 创建文件路径对象,然后在该文件路径对象上调用 unlink() 方法:

import pathlib

try:
    file_path = pathlib.Path('textFiles/questions.txt')
    file_path.unlink()
    print('文件已删除')
except:
    print('文件不存在')

使用 OS 模块删除空文件夹

OS 模块提供了一个 rmdir() 方法,使用该方法可以删除文件夹。

下面的代码向我们演示了如何删除空的 client 文件夹:

import os

try:
    os.rmdir('client')
    print('文件夹已删除')
except:
    print('文件夹不存在')

如果尝试删除非空文件夹,就会出现 Directory not empty error 错误。

使用 Pathlib 模块删除空文件夹

通过使用 pathlib 模块删除空文件夹,我们首先需要使用待删除文件夹的路径创建一个 Path 对象,然后在该 Path 对象上调用 rmdir() 方法来删除它:

import pathlib

try:
    folder_path = pathlib.Path('docs')
    folder_path.rmdir()
    print('文件夹已删除')
except:
    print('文件夹不存在')

使用 shutil 模块删除非空文件夹

要删除一个非空文件夹,我们首先必须递归地删除文件夹中的所有文件和子文件夹,然后再删除该文件夹本身。不过,我们可以使用 shutil 模块来简化这一操作。

shutil 模块有一个 rmtree() 方法,可以用来删除非空文件夹。

假设当前目录中有一个名为 textFiles 文件夹,它有几个文件和一个子文件夹。下面的代码演示了如何使用 rmtree() 方法删除该文件夹:

import shutil

try:
    shutil.rmtree('textFiles')
    print('已删除文件夹及其内容')
except:
    print('无法删除文件夹')

结语

本文介绍了如何使用 Python 的 ospathlib 模块删除文件和空文件夹的,以及如何使用 shutil 模块删除非空文件夹。