如何使用 Python 删除文件和文件夹

Suraj Joshi 2023年1月30日 2020年10月15日
  1. 使用 Python 中的 os 模块删除文件
  2. 在 Python 中使用 pathlib 模块删除文件
  3. 在 Python 中用模式匹配删除文件
  4. 使用 Python os 模块删除文件夹
  5. 使用 Python pathlib 模块删除文件夹
  6. 使用 Python shutil.rmtree 方法删除非空文件夹
如何使用 Python 删除文件和文件夹

本文介绍了如何使用 Python 内置包如 ospathlibshutil 来删除文件和文件夹。

使用 Python 中的 os 模块删除文件

os 是一个内置模块,在 Python 2 和 Python 3 中都可以使用。

我们可以使用 os 模块中的 remove()unlink() 来使用 Python 删除文件。这两个函数的作用是相似的。它们都把要删除的文件的路径作为参数。

import os
os.remove('test_dir/main.py')

它删除的文件名为 main.py,位于 test_dir 内。由于我们在这里使用的是相对路径,所以 test_dir 必须和我们的 Python 程序在同一个根文件夹下。我们也可以使用绝对文件路径。

import os
os.unlink('test_dir/main.py')

它也会删除位于 test_dir 内的名为 main.py 的文件。

这两个函数都只能删除文件。如果我们给出要删除的文件夹的路径,我们会得到 IsADirectoryError 错误。

同样,如果文件不存在于指定的路径中,我们会得到 FileNotFoundError

如果我们没有删除文件的权限,我们会得到 PermissionError 错误。

为了在删除文件时处理这些错误,我们应该使用异常处理。

import os

try:
    os.remove('test_dir/main.py')
except OSError as e:
    print(f"Error:{ e.strerror}")
    

输出:

Error:No such file or directory

如果没有这样的文件,则会在输出中打印出错误,而不是让整个程序崩溃。

在 Python 中使用 pathlib 模块删除文件

为了使用 pathlib 模块删除文件,我们首先创建一个在 pathlib 模块中定义的 Path 对象。然后我们使用 unlink() 方法来删除文件。

from pathlib import Path

filePath=Path("test_dir/main.py")

try:
    filePath.unlink()
except OSError as e:
    print(f"Error:{ e.strerror}")
    

在这里,我们从 Path 类中实例化出 filePath 对象,其中包含要删除的文件的位置。

pathlib 模块只在 Python 3.4 及以上版本中可用。对于 Python 2,我们需要使用 pip 安装该模块。

在 Python 中用模式匹配删除文件

我们可以使用 glob 模块来匹配文件中的模式,在收集到所有符合模式的文件后,我们可以使用上面指定的任何方法删除所有的文件。

import os
import glob

py_files = glob.glob('test_dir/*.py')

for py_file in py_files:
    try:
        os.remove(py_file)
    except OSError as e:
        print(f"Error:{ e.strerror}")

这将删除 test_dir 文件夹下所有扩展名为 .py 的文件。

使用 Python os 模块删除文件夹

要用 Python 删除文件夹,我们可以使用 ospathlibshutlib 文件夹,ospathlib 只能删除空文件夹,而 shutlib 也可以删除非空文件夹。ospathlib 只能删除空文件夹,而 shutlib 也可以删除非空文件夹。

import os

dirPath = 'test_dir'

try:
    os.rmdir(dirPath)
except OSError as e:
    print(f"Error:{ e.strerror}")

它删除了我们当前工作文件夹中的空文件夹 test_dir

使用 Python pathlib 模块删除文件夹

如果文件夹是非空的文件夹不能用这个方法删除,我们就会从程序中得到错误输出- Error: Directory not empty

我们也可以使用 pathlib 模块来删除非空文件夹。

from pathlib import Path

dirPath = Path('test_dir')

try:
    dirPath.rmdir()
except OSError as e:
    print(f"Error:{ e.strerror}")

它也会删除我们当前工作文件夹中的空文件夹 test_dir

使用 Python shutil.rmtree 方法删除非空文件夹

要使用 Python 删除非空文件夹,我们使用 shutil 模块中的 rmtree 方法。

import shutil

dirPath = 'test_dir'

try:
    shutil.rmtree(dirPath)
except OSError as e:
    print(f"Error:{ e.strerror}")
    

它删除了我们当前工作文件夹中的 test_dir 文件夹及其所有内容。

Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

相关文章 - Python File

相关文章 - Python Directory