如何检查Python中是否存在文件或目录

编写Python脚本时,仅当文件或目录存在或不存在时,才可能要执行某些操作。 例如,您可能想读取或写入数据到配置文件,或者仅在文件不存在时才创建文件。

在Python中,有许多不同的方法来检查文件是否存在并确定文件的类型。

本教程显示了有关如何检查文件是否存在的三种不同技术。

检查文件是否存在

检查文件是否存在的最简单方法是尝试打开文件。 这种方法不需要导入任何模块,并且可以与Python 2和3一起使用。如果要打开文件并执行某些操作,请使用此方法。

以下代码段使用一个简单的try-except块。 我们正在尝试打开文件 filename.txt,如果文件不存在,则 IOError 引发异常,并显示“文件不可访问”消息:

try:
    f = open("filename.txt")
    # Do something with the file
except IOError:
    print("File not accessible")
finally:
    f.close()

如果您使用的是Python 3,则还可以使用 FileNotFoundError 代替 IOError 例外。

打开文件时,建议使用 with 关键字,即使在操作过程中引发异常,也可确保在文件操作完成后正确关闭文件。 这也使您的代码更短,因为您不需要使用来关闭文件。 close 功能。

以下代码等效于前面的示例:

try:
    with open('/etc/hosts') as f:
        print(f.readlines())
        # Do something with the file
except IOError:
    print("File not accessible")

在上面的示例中,我们使用了try-except块并打开文件以避免竞争情况。 当您有多个进程访问同一文件时,就会发生争用情况。

例如,当您检查文件的存在时,另一个过程可能会在检查和打开文件之间的时间范围内创建,删除或阻止文件。 这可能会导致您的代码中断。

使用os.path模块检查文件是否存在

os.path 模块提供了一些有用的功能来处理路径名。 该模块可用于Python 2和3。

在本教程的上下文中,最重要的功能是:

  • os.path.exists(path) -如果 path 是文件,目录或有效的符号链接。
  • os.path.isfile(path) -如果 path 是常规文件或文件的符号链接。
  • os.path.isdir(path) -如果 path 是目录或目录的符号链接。

以下 if 语句检查文件是否 filename.txt 存在:

import os.path

if os.path.isfile('filename.txt'):
    print ("File exist")
else:
    print ("File not exist")

需要对文件执行操作之前检查文件是否存在时,请使用此方法。 例如,复制或删除文件。

如果要打开和修改文件,请使用以前的方法。

使用pathlib模块检查文件是否存在

pathlib Python 3.4及更高版本中提供了该模块。 该模块提供了一个面向对象的界面,用于处理不同操作系统的文件系统路径。

与前面的示例相同,以下代码检查文件是否 filename.txt 存在:

from pathlib import Path

if Path('filename.txt').is_file():
    print ("File exist")
else:
    print ("File not exist")

is_file 如果返回true,则返回true path 是常规文件或文件的符号链接。 要检查目录是否存在,请使用 is_dir 方法。

之间的主要区别 pathlibos.path 就是它 pathlib 允许您使用以下路径 Path 具有相关方法和属性的对象,而不是常规对象 str 对象。

如果要在Python 2中使用此模块,可以使用pip进行安装:

pip install pathlib2

结论#

在本指南中,我们向您展示了如何使用Python检查文件或目录是否存在。

如果您有任何疑问或反馈,请随时发表评论。

蟒蛇

Sidebar