跳转至

4. 如何检查一个文件是否存在

题目

不使用try语句,如何检查一个文件是否存在? 链接

回答一

如果检查文件存在性的目的是为了打开它,那么使用try语句去尝试打开它会更安全一些。因为先检查然后再打开,虽然检查到存在,但打开之前文件可能被删除或者被移动。

如果不打算立即打开这个文件,那么使用os.path.isfile

如果这个路径是一个存在的正常的文件,将返回 True。能跟踪符号链接(follow symbolic links),因此对于相同的路径islink()isfile()都会返回True

import os.path
os.path.isfile(fname)

如果不需要确认是否是一个文件

Python 3.4 开始,pathlib模块提供了一种面向对象的方式( Python 2.7 中可以导入 pathlib2

from pathlib import Path

my_file = Path("/path/to/file")
if my_file.is_file():
    # 文件存在

检测一个目录

if my_file.is_dir():
    # 目录存在

检测是否存在,不区分目录和文件

if my_file.exists():
    # 路径存在

你也可以使用resolve()try语句中

try:
    my_abs_path = my_file.resolve():
except FileNotFoundError:
    # 不存在
else:
    # 存在

回答二

os.path.exists方法可以

import os.path
os.path.exists(file_path)

不区分目录和文件,路径存在就会返回True,如果需要区分可以使用

os.path.isfile(file_name)

来检测是否是一个文件,能跟踪符号链接。