原文: How to Check if a File Exists in Python with isFile() and exists()
在 Python 中处理文件时,有时可能需要检查一个文件是否存在。
但是为什么要检查一个文件是否存在呢?
当你想执行特定的操作,如打开、读取或写入一个文件时,确认这个特定文件存在,执行这些操作就是很方便的。
如果你试图执行上面提到的任何操作,而文件不存在,你会遇到错误,你的程序最终会崩溃。
因此,为了执行操作并防止你的程序崩溃,第一步是检查一个文件是否存在于给定的路径上,这是一个有用的步骤。
值得庆幸的是,Python 有多种内置的方法来检查一个文件是否存在,比如内置的 os.path 和 pathlib 模块。
具体来说,当使用 os.path 模块时,你可以使用:
os.path.isfile(path)方法,如果path是一个文件或一个文件的符号链接,则返回True。os.path.exists(path)方法,如果path是一个文件、目录或文件的符号链接,则返回True。
而当使用 pathlib 模块时,你可以使用 pathlib.Path(path).is_file() 函数,如果 path 是一个文件并且存在,它将返回 True。
在这篇文章中,你将学习如何使用 Python 的 os.path 和 pathlib 模块来检查一个文件是否存在。
让我们开始学习吧!
如何使用 os.path 模块检查一个文件是否存在
os 模块是 Python 中的标准库(也被称为 stdlib)的一部分,它提供了一种访问操作系统并与之交互的方式。
通过 os 模块,你可以使用依赖于底层操作系统的功能,如创建和删除文件和文件夹,以及复制和移动文件夹的内容,这些只是其中几个例子。
因为它是标准库的一部分,所以当你在本地系统上安装 Python 时,os 模块已经预先打包好了。你只需要在你的 Python 文件的顶部使用 import 语句导入它:
import os
os.path 是 os 模块的一个子模块。
它提供了两个操作文件的方法——isfile() 和 exists() 方法,根据文件是否存在,输出 True 或 False。
由于你将使用 os.path 子模块,你将需要在文件的顶部导入它,像这样:
import os.path
如何使用 Python 中的 os.path.isfile() 方法检查一个文件是否存在
isfile() 方法的语法是这样的:
os.path.isfile(path)
该方法只接受一个参数,即 path,它代表你想确认其存在的文件的定义路径。
path 参数是一个用引号括起来的字符串。
isfile() 方法的返回值是一个布尔值——True 或 False,取决于该文件是否存在。
请记住,如果路径以目录名结尾而不是文件,它将返回 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.path 和 pathlib 模块及其相关方法在 Python 中检查一个文件是否存在。
希望你已经理解了这些模块之间的区别以及何时使用每个模块。
感谢你阅读本文,happy coding!