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

  1. 使用 Python 中的 os 模块删除文件
  2. 在 Python 中使用 pathlib 模块删除文件
  3. 在 Python 中用模式匹配删除文件
  4. 使用 Python os 模块删除文件夹
  5. 使用 Python pathlib 模块删除文件夹
  6. 使用 Python shutil.rmtree 方法删除非空文件夹

本文介绍了如何使用 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 文件夹及其所有内容。

comments powered by Disqus