原文: How to Check if a File Exists in Python with isFile() and exists()

在 Python 中处理文件时,有时可能需要检查一个文件是否存在。

但是为什么要检查一个文件是否存在呢?

当你想执行特定的操作,如打开、读取或写入一个文件时,确认这个特定文件存在,执行这些操作就是很方便的。

如果你试图执行上面提到的任何操作,而文件不存在,你会遇到错误,你的程序最终会崩溃。

因此,为了执行操作并防止你的程序崩溃,第一步是检查一个文件是否存在于给定的路径上,这是一个有用的步骤。

值得庆幸的是,Python 有多种内置的方法来检查一个文件是否存在,比如内置的 os.pathpathlib 模块。

具体来说,当使用 os.path 模块时,你可以使用:

  • os.path.isfile(path) 方法,如果 path 是一个文件或一个文件的符号链接,则返回 True
  • os.path.exists(path) 方法,如果 path 是一个文件、目录或文件的符号链接,则返回 True

而当使用 pathlib 模块时,你可以使用 pathlib.Path(path).is_file() 函数,如果 path 是一个文件并且存在,它将返回 True

在这篇文章中,你将学习如何使用 Python 的 os.pathpathlib 模块来检查一个文件是否存在。

让我们开始学习吧!

如何使用 os.path 模块检查一个文件是否存在

os 模块是 Python 中的标准库(也被称为 stdlib)的一部分,它提供了一种访问操作系统并与之交互的方式。

通过 os 模块,你可以使用依赖于底层操作系统的功能,如创建和删除文件和文件夹,以及复制和移动文件夹的内容,这些只是其中几个例子。

因为它是标准库的一部分,所以当你在本地系统上安装 Python 时,os 模块已经预先打包好了。你只需要在你的 Python 文件的顶部使用 import 语句导入它:

import os

os.pathos 模块的一个子模块。

它提供了两个操作文件的方法——isfile()exists() 方法,根据文件是否存在,输出 TrueFalse

由于你将使用 os.path 子模块,你将需要在文件的顶部导入它,像这样:

import os.path

如何使用 Python 中的 os.path.isfile() 方法检查一个文件是否存在

isfile() 方法的语法是这样的:

os.path.isfile(path)

该方法只接受一个参数,即 path,它代表你想确认其存在的文件的定义路径。

path 参数是一个用引号括起来的字符串。

isfile() 方法的返回值是一个布尔值——TrueFalse,取决于该文件是否存在。

请记住,如果路径以目录名结尾而不是文件,它将返回 False

让我们来看看该方法的一个实际例子。

我想检查在我的当前工作目录 python_project 中是否存在 example.txt 文件。

example.txt 与我的 Python 文件 main.py 在同一级别,所以我使用的是相对文件路径。

我把 example.txt 的路径存储在一个名为 path 的变量中。

然后我使用 isfile() 方法,并把 path 作为参数传给它,以检查 example.txt 是否存在于该路径中。

由于该文件确实存在,所以返回值为 True

import os.path

path = './example.txt'

check_file = os.path.isfile(path)

print(check_file)

# output

# True

好的,但是绝对路径呢?

下面是使用绝对路径时的等效代码。example.txt 文件位于 python_project 目录下,该目录位于我的主目录 /Users/dionysialemonaki/ 内:

import os.path

path = '/Users/dionysialemonaki/python_project/example.txt'

print(os.path.isfile(file_path))

# Output

# True

正如前面提到的,isfile() 方法只对文件而不是目录起作用:

import os.path

path = '/Users/dionysialemonaki/python_project'

check_file = os.path.isfile(path)

print(check_file)

# output

# False

如果你的路径以一个目录结束,返回值是 False

如何使用 Python 中的 os.path.exists() 方法检查一个文件是否存在

exists() 方法的语法是这样的:

os.path.exists(path)

从上面的语法可以看出,exists() 方法看起来与 isfile() 方法类似。

os.path.exists() 方法检查指定的路径是否存在。

exists()isfile() 的主要区别在于,exists() 将在给定的文件夹或文件的路径存在的情况下返回 True,而 isfile() 只在给定的路径是文件而不是文件夹的路径时返回 True

请记住,如果你没有对该目录的访问和权限,即使路径存在,exists() 也会返回 False

让我们回到上一节的例子,用 existence() 方法检查 example.txt 文件是否存在于当前工作目录中:

import os.path

path = './example.txt'

check_file = os.path.exists(path)

print(check_file)

# output

# True

由于 example.txt 的路径存在,输出结果为 True

如前所述,exists() 方法检查指向一个目录的路径是否有效。

在上一节中,当我使用 isfile() 方法并且路径指向一个目录时,即使该目录存在,输出结果也是 False

当使用 exists() 方法时,如果指向一个目录的路径存在,输出将是 True

import os.path

path = '/Users/dionysialemonaki/python_project'

check_file = os.path.exists(path)

print(check_file)

# output

# True

当你想检查一个文件或目录是否存在时,exists() 方法就会派上用场。

如何使用 pathlib 模块检查一个文件是否存在

Python 3.4 版本引入了 pathlib 模块。

使用 pathlib 模块来检查一个文件是否存在,是一种面向对象的方法来处理文件系统的路径。

像之前的 os.path 模块一样,你需要导入 pathlib 模块。

具体来说,你需要像这样从 pathlib 模块中导入 Path 类:

from pathlib import Path

然后,创建一个新的 Path 类的实例,用你想检查的文件路径来初始化它:

from pathlib import Path

# 用文件的路径创建一个 Path 对象
path = Path('./example.txt')

你可以使用 type() 函数来检查数据类型:

from pathlib import Path

path = Path('./example.txt')

print(type(path))

# 输出是一个 pathlib 对象
# <class 'pathlib.PosixPath'>

这证实了你创建了一个 Path 对象。

让我们看看如何使用 pathlib 模块来检查一个文件是否存在,使用 is_file() 方法,这是 pathlib 模块可用的内置方法之一。

如何使用 Python 中的 Path.is_file() 方法检查一个文件是否存在

is_file() 方法检查一个文件是否存在。

如果 Path 对象指向一个文件,它返回 True;如果文件不存在,它返回 False

让我们通过一个例子看看它是如何工作的:

from pathlib import Path

# 用文件的路径创建一个 Path 对象
path = Path('./example.txt')

print(path.is_file())

# output

# True

由于 example.txt 文件存在于指定路径中,is_file() 方法返回 True

总结

在这篇文章中,你学会了如何使用 os.pathpathlib 模块及其相关方法在 Python 中检查一个文件是否存在。

希望你已经理解了这些模块之间的区别以及何时使用每个模块。

感谢你阅读本文,happy coding!