Python判断文件或文件夹是否存在的三种方法


Posted in Python onJuly 27, 2017

常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错。所以最好在做任何操作之前,先判断文件是否存在。

这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块、Try语句、pathlib模块。

1.使用os模块

os模块中的os.path.exists()方法用于检验文件是否存在。

  • 判断文件是否存在
import os
os.path.exists(test_file.txt)
#True
os.path.exists(no_exist_file.txt)
#False
  • 判断文件夹是否存在
import os
os.path.exists(test_dir)
#True
os.path.exists(no_exist_dir)
#False

可以看出用os.path.exists()方法,判断文件和文件夹是一样。

其实这种方法还是有个问题,假设你想检查文件“test_data”是否存在,但是当前路径下有个叫“test_data”的文件夹,这样就可能出现误判。为了避免这样的情况,可以这样:

  • 只检查文件
import os
os.path.isfile("test-data")

通过这个方法,如果文件”test-data”不存在将返回False,反之返回True。

即是文件存在,你可能还需要判断文件是否可进行读写操作。

判断文件是否可做读写操作

使用os.access()方法判断文件是否可进行读写操作。

语法:

os.access(, )

path为文件路径,mode为操作模式,有这么几种:

  • os.F_OK: 检查文件是否存在;
  • os.R_OK: 检查文件是否可读;
  • os.W_OK: 检查文件是否可以写入;
  • os.X_OK: 检查文件是否可以执行

该方法通过判断文件路径是否存在和各种访问模式的权限返回True或者False。

import os
if os.access("/file/path/foo.txt", os.F_OK):
  print "Given file path is exist."
if os.access("/file/path/foo.txt", os.R_OK):
  print "File is accessible to read"
if os.access("/file/path/foo.txt", os.W_OK):
  print "File is accessible to write"
if os.access("/file/path/foo.txt", os.X_OK):
  print "File is accessible to execute"

2.使用Try语句

可以在程序中直接使用open()方法来检查文件是否存在和可读写。

语法:

open()

如果你open的文件不存在,程序会抛出错误,使用try语句来捕获这个错误。

程序无法访问文件,可能有很多原因:

  • 如果你open的文件不存在,将抛出一个FileNotFoundError的异常;
  • 文件存在,但是没有权限访问,会抛出一个PersmissionError的异常。

所以可以使用下面的代码来判断文件是否存在:

try:
  f =open()
  f.close()
except FileNotFoundError:
  print "File is not found."
except PersmissionError:
  print "You don't have permission to access this file."

其实没有必要去这么细致的处理每个异常,上面的这两个异常都是IOError的子类。所以可以将程序简化一下:

try:
  f =open()
  f.close()
except IOError:
  print "File is not accessible."

使用try语句进行判断,处理所有异常非常简单和优雅的。而且相比其他不需要引入其他外部模块。

3. 使用pathlib模块

pathlib模块在Python3版本中是内建模块,但是在Python2中是需要单独安装三方模块。

使用pathlib需要先使用文件路径来创建path对象。此路径可以是文件名或目录路径。

  • 检查路径是否存在
path = pathlib.Path("path/file")
path.exist()
  • 检查路径是否是文件
path = pathlib.Path("path/file")
path.is_file()

总结

以上所述是小编给大家介绍的Python判断文件或文件夹是否存在的三种方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python封装对象实现时间效果
Apr 23 Python
Python多线程编程(三):threading.Thread类的重要函数和方法
Apr 05 Python
Python的Django框架可适配的各种数据库介绍
Jul 15 Python
Python模糊查询本地文件夹去除文件后缀的实例(7行代码)
Nov 09 Python
Python的CGIHTTPServer交互实现详解
Feb 08 Python
对python requests的content和text方法的区别详解
Oct 11 Python
利用python在excel里面直接使用sql函数的方法
Feb 08 Python
Python XlsxWriter模块Chart类用法实例分析
Mar 11 Python
tensorflow实现二维平面模拟三维数据教程
Feb 11 Python
使用Keras预训练好的模型进行目标类别预测详解
Jun 27 Python
PyCharm最新激活码PyCharm2020.2.3有效
Nov 18 Python
paramiko使用tail实时获取服务器的日志输出详解
Dec 06 Python
Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】
Jul 27 #Python
Python基于tkinter模块实现的改名小工具示例
Jul 27 #Python
python django 增删改查操作 数据库Mysql
Jul 27 #Python
Python中Selenium模拟JQuery滑动解锁实例
Jul 26 #Python
Python列表和元组的定义与使用操作示例
Jul 26 #Python
老生常谈Python之装饰器、迭代器和生成器
Jul 26 #Python
python基础之入门必看操作
Jul 26 #Python
You might like
java EJB 加密与解密原理的一个例子
2008/01/11 PHP
PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
2012/02/05 PHP
利用PHP如何写APP接口详解
2016/08/23 PHP
PHP二维数组去重实例分析
2016/11/18 PHP
JavaScript延迟加载
2021/03/09 Javascript
javaScript 计算两个日期的天数相差(示例代码)
2013/12/27 Javascript
nodejs npm install全局安装和本地安装的区别
2014/06/05 NodeJs
jQuery 更改checkbox的状态,无效的解决方法
2016/07/22 Javascript
AngularJS+bootstrap实现动态选择商品功能示例
2017/05/17 Javascript
第一次记录Bootstrap table学习笔记(1)
2017/05/18 Javascript
微信小程序 sha1 实现密码加密实例详解
2017/07/06 Javascript
JavaScript判断变量名是否存在数组中的实例
2017/12/28 Javascript
JS实现的合并两个有序链表算法示例
2019/02/25 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
2019/04/17 Javascript
如何基于JavaScript判断图片是否加载完成
2019/12/28 Javascript
js实现星星海特效的示例
2020/09/28 Javascript
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
[56:21]LGD vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python爬虫常用的模块分析
2014/08/29 Python
跟老齐学Python之??碌某?? target=
2014/09/12 Python
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
Python标准库之collections包的使用教程
2017/04/27 Python
Python信息抽取之乱码解决办法
2017/06/29 Python
python实现数据库跨服务器迁移
2018/04/12 Python
python按修改时间顺序排列文件的实例代码
2019/07/25 Python
Python安装依赖(包)模块方法详解
2020/02/14 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
2020/11/06 Python
GAP美国官网:美国休闲时尚品牌
2016/08/26 全球购物
英国复古和经典球衣网站:Vintage Football Shirts
2018/10/05 全球购物
Java如何获得ResultSet的总行数
2016/09/03 面试题
股权转让协议书范本
2014/04/12 职场文书
校园会短篇的广播稿
2014/10/21 职场文书
2015年新学期寄语
2015/02/26 职场文书
教你使用Python获取QQ音乐某个歌手的歌单
2022/04/03 Python
js判断两个数组相等的5种方法
2022/05/06 Javascript