使用 Python 检查文件是否存在的 8 种方法

Python 对外部文件的依赖是一个关键方面,在执行任何代码之前注意基础/源文件是明智的。在运行特定程序之前,您需要确保源文件存在于指定位置。

每个开发人员都了解创建回退代码的必要性,这可以在不满足条件的情况下避免程序失败。在 Python 中,有多种方法可以检查文件是否存在;以下是您应该了解的主要方法。

1. Try and except 语句

try 和 except 语句检查命令并产生输出。在下面的代码中, try语句将尝试打开一个文件 ( testfile.txt )。如果 Python 的处理器能够定位文件,它将打开文件并打印结果File is open and available for use

 try:
f = open('testfile.txt')
print("File is available for use")
f.close()
except IOError:
print('File is not accessible')

如果遇到错误,它会打印结果File is not access 。一旦完整的代码被编译和执行,如果它被打开,它将关闭打开的文件。

Python 对外部文件的依赖是一个至关重要的方面,在执行任何代码之前,您需要注意基本/源文件。

在执行特定程序之前,请确保您的源文件存在于特定位置。

2.os.path.isfile(路径)

Python 有一个内置模块 OS,可以调用它与底层文件、文件夹和目录进行交互。 Python 的os.path.isfile()方法可用于检查目录以及特定文件是否存在。

第一步是使用import os.path库导入内置函数。下一个命令检查该文件是否存在于特定位置。

 import os.path
os.path.isfile(r"C:UsersWini BhallaDesktopPython test file.txt")

输出返回True ,因为文件存在于特定位置。如果文件不存在,Python 将返回False

3. os.path.exists(path)

基于类似的理由, import os library 语句可用于检查您的系统上是否存在该目录。

语法相当简单:

 Import os.path
os.path.exists(r"C:UsersWini BhallaDesktoptest")

就像上一步一样,如果在指定的系统路径上找到目录/文件夹,Python 将返回True ,如果未找到目录/文件夹,则返回False

相关:学习Python?这是复制文件的方法

4. Os.Path.Isdir(路径)

就像os.path.isfileos.path.exists() 一样os.path.isdir()是 os 库的一个子函数。这里唯一的区别是此命令仅适用于目录。正如预期的那样,使用此语法会根据目录的存在返回一个布尔值。

例如:

 import os
os.path.isdir(r"C:UsersWini BhallaDesktopOS")

输出为True ,因为文件夹/目录存在于指定路径中。

 import os
os.path.isdir(r"C:UsersWini BhallaDesktoptestdirectory")

输出为False ,因为指定路径中不存在文件夹/目录。

5. Pathlib.path.exists()

Python 3.4及以上版本提供了Pathlib模块,可以使用import函数导入。 Pathlib 在一处捕获必要的功能,并通过各种方法使其可用以与路径对象一起使用。

使用 Pathlib:

 import pathlib
file = pathlib.Path(r"C:UsersWini BhallaDesktopPython test file.txt")
if file.exists ():
print ("File exists")
else:
print ("File does not exist")

根据文件是否存在,输出将显示指定路径中是​​否存在该文件。理想情况下,可以根据程序的要求更改打印语句中的代码

6.os.listdir(路径)

Python 中的listdir方法返回用户指定的特定目录中所有文件的列表。但是,此方法不会返回子文件夹中存在的任何文件。

listdir方法只接受一个参数,文件路径。理想情况下,文件路径将是您要检索的文件和文件夹名称。

基本语法包括:

 os.listdir(path)

在下面的示例中,您可以创建一个循环来遍历目录中列出的所有文件,然后检查使用if语句声明的指定文件是否存在。

 import os
path = r'C:UsersWini BhallaDesktop'
files = os.listdir(path)
print (files)

此代码将打印出当前目录中可用文件的列表。

 import os
path = r'C:UsersWini BhallaDesktop' files = os.listdir(path)
for f in files:
if f == "test.txt":
print("File exists")
else:
print("File does not exist")

此外,当循环运行时, listdir函数和if语句逻辑将循环遍历文件列表并打印出结果,具体取决于在打印语句中传递的条件。

相关:在 Python 中使用带有列表的循环

7. 全局模块

glob模块将所有路径名与指定的参数匹配,并简洁地允许您访问文件系统。由于 glob 用于模式匹配,因此您可以使用它来检查文件的状态。

该路径有两个引用:

如果找到文件,代码将返回True ,否则返回False

Glob 的用法示例:

 import glob
if glob.glob(r"C:UsersWini BhallaDesktoptest.txt"):
print ("File exist")
else:
print("File does not exist")

如果找到文件,此代码的输出将打印结果。

8. 子流程

子进程模块中的 test 命令是一种测试文件和目录是否存在的有效方法。测试命令仅适用于基于 Unix 的机器,而不适用于基于 Windows 的操作系统机器。

您可以根据需要使用以下命令:

  • test -e:检查路径是否存在
  • test -f:检查文件是否存在
  • test-d:检查文件夹是否存在

使用子流程验证路径:

 from subprocess import run
run(['test', '-e', 'testfile.txt']).returncode == 0
run(['test', '-e', 'im-not-here.txt']).returncode == 0

此代码调用后跟“-e”的测试函数来验证路径的存在。对于无效路径,该函数显示False

使用子进程验证文件:

 run(['test', '-f', 'testfile.txt']).returncode == 0
run(['test', '-f', 'testdirectory']).returncode == 0

'-f'函数测试文件是否存在,并为目录返回False

使用子进程验证目录:

 run(['test', '-d', 'testfile.txt']).returncode == 0
run(['test', '-d', 'testdirectory']).returncode == 0

'-d'函数测试目录是否存在,并为 test 命令中的任何文件查询返回False

您将使用哪个命令来定位您的文件?

Python 是一种相对易于使用的语言,它为最终用户提供了很多选择。要检查文件是否存在,您可以使用上面列出的任何过程。

但是,如果您是初学者,总有方法可以学习 Python。由于 Python 是一门庞大的语言,因此最好花一些时间了解不同的细微差别及其命令范围。