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

时间:2020-01-09 10:44:18  来源:igfitidea点击:

在本教程中,我们将介绍如何在Python中删除(或者删除)文件或者目录,甚至递归删除目录。在Python中,内置模块中有多种功能和方法可用于此目的。

删除单个文件– os.remove(),os.unlink(),pathlib.Path.unlink()
删除一个空目录– os.rmdir(),pathlib.Path.rmdir()
删除非空目录– shutil.rmtree()

使用os.remove()在Python中删除单个文件

Python中的os模块具有函数remove(),可用于删除文件。将要删除的文件路径作为参数传递给函数。如果path是目录,则会引发OSError,因此最好在删除之前检查它是否是文件。

import os
def delete_file(file_path, dir_path):
    full_path = os.path.join(dir_path, file_path)
    if os.path.isfile(full_path):
        os.remove(full_path)
    else:
        print('File %s not found' % full_path)

使用os.unlink()在Python中删除单个文件

该函数在语义上与remove()相同。

import os
def delete_file(file_path, dir_path):
    full_path = os.path.join(dir_path, file_path)
    if os.path.isfile(full_path):
        os.unlink(full_path)
    else:
        print('File %s not found' % full_path)

使用pathlib.Path.unlink()在Python中删除单个文件

从Python 3.4开始,pathlib模块可用。该模块提供了一种面向对象的方式来访问文件系统路径。要删除文件,请创建一个代表文件路径的Path对象,然后对该对象调用unlink()方法。

from pathlib import Path
def delete_file(file_path):
    path = Path(file_path)
    if path.is_file():
        path.unlink()
    else:
        print('File %s not found' % path)

#call function
delete_file("F:/theitroad/Python/test.txt")

使用os.rmdir()删除一个空目录

在Python os模块中,有一个函数rmdir()可用于删除目录。仅在目录为空时有效,否则,将引发OSError。

def delete_dir(dir_path):
    if os.path.isdir(dir_path):
        os.rmdir(dir_path)
    else:
        print('Directory %s not found' % dir_path)

使用pathlib.Path.rmdir()删除一个空目录

要删除目录,请创建一个代表目录路径的Path对象,然后在该对象上调用rmdir()方法。该目录必须为空才能删除。

def delete_dir(dir_path):
    path = Path(dir_path)
    if path.is_dir():
        path.rmdir()
    else:
        print('Directory %s not found' % path)

使用shutil.rmtree()删除非空目录

为了删除整个目录树,可以使用shutil.rmtree()。此功能将删除所有子目录,并以递归方式遍历目录树。

shutil.rmtree()函数的语法如下:

shutil.rmtree(路径,ignore_errors = False,onerror =无)

有两个具有默认值的参数。如果ignore_errors为true,则删除失败导致的错误将被忽略。如果调用了由onerror指定的false或者省略的处理程序来处理此类错误,则如果省略了该处理程序,则会引发异常。

def delete_dir(dir_path):
    if os.path.isdir(dir_path):
        shutil.rmtree(dir_path)
    else:
        print('Directory %s not found' % dir_path)