如何在 Python 中用 isFile() 和 existence() 检查一个文件是否存在
在 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 中检查一个文件是否存在。
希望你已经理解了这些模块之间的区别以及何时使用每个模块。