Python如何判断文件是否存在?
Python如何判断文件是否存在?
运行环境 Runtime environment
1 | 操作系统: Windos10 |
背景
平时在读写文件之前,需要判断文件或目录是否存在,不然在某些情况下,可能会使程序发生错误。
所以最好在做任何操作之前,先判断文件是否存在。
按照使用频率,排个序大概有以下几种方式。
os模块
os模块中的 os.path.exists() 方法用于检验文件或者文件夹是否存在。
判断文件是否存在
1 | import os |
判断文件夹是否存在
1 | import os |
注意
os.path.exists() 存在误判,
假设你想检查文件“test_data”是否存在,
但是当前路径下有个叫“test_data”的文件夹,
这样就可能出现误判。
所以,就多一层逻辑,用于检查是否为文件。
1 | import os |
通过这个方法,如果文件”test_dir”不存在将返回False,
反之返回True。
即是文件存在,你可能还需要判断文件是否可进行读写操作。
判断文件是否有读写权限
使用os.access()方法判断文件是否可进行读写操作
语法:
os.access(path, mode)
path为文件路径,传入参数类型为字符串,mode为操作模式,
有这么几种:
os.F_OK: 检查文件是否存在;
os.R_OK: 检查文件是否可读;
os.W_OK: 检查文件是否可以写入;
os.X_OK: 检查文件是否可以执行
该方法通过判断文件路径是否存在和各种访问模式的权限,
返回True或者False。
1 | import os |
Try异常抓取判断
可以在程序中直接使用open()方法来检查文件是否存在和可读写。
语法:
open() or with open()
如果你open的文件不存在,程序会抛出错误,
使用try语句来捕获这个错误。
程序无法访问文件,可能有很多原因:
如果你open的文件不存在,将抛出一个FileNotFoundError的异常;
文件存在,但是没有权限访问,会抛出一个PersmissionError的异常。
通过异常名称的特点,便可以使用下面的代码来判断文件是否存在:
1 | try: |
IOError 异常的抓取范围较大,一般放在最后,只要抓到保存,基本说明文件不存在或者不可用了。
pathlib模块
pathlib模块在Python3版本中是内建模块,
但是在Python2中是需要单独安装三方模块。
使用pathlib需要先使用文件路径来创建path对象。
此路径可以是文件名或目录路径。
检查路径是否存在
1 | path = pathlib.Path("path/file") |
检查路径是否是文件
1 | path = pathlib.Path("path/file") |
与OS模块的用法类似。
总结
这其实是个很简单的东西,
平时开发的时候,
你也许知道有那么个方法可以去实现这样的功能,
但是,却不一定记得住具体的方法名叫啥,
于是就有需要重新查一下。
那么干脆在自己的博客,留个笔记好了。