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中使用partial改变方法默认参数实例
Apr 28 Python
Python实现高效求解素数代码实例
Jun 30 Python
Python字符串格式化输出方法分析
Apr 13 Python
深入理解python中的select模块
Apr 23 Python
Python基于回溯法子集树模板解决数字组合问题实例
Sep 02 Python
详解python字节码
Feb 07 Python
python 获取当天凌晨零点的时间戳方法
May 22 Python
django的ORM操作 增加和查询
Jul 26 Python
DataFrame.groupby()所见的各种用法详解
Jun 14 Python
python3 循环读取excel文件并写入json操作
Jul 14 Python
Python创建临时文件和文件夹
Aug 05 Python
Python实现自动签到脚本功能
Aug 20 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
php多个字符串替换成同一个的解决方法
2013/06/18 PHP
php实现ip白名单黑名单功能
2015/03/12 PHP
jquery插件 cluetip 关键词注释
2010/01/12 Javascript
Jquery判断$("#id")获取的对象是否存在的方法
2013/09/25 Javascript
php+js实现倒计时功能
2014/06/02 Javascript
JavaScript输出当前时间Unix时间戳的方法
2015/04/06 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
2015/12/12 Javascript
JavaScript隐式类型转换
2016/03/15 Javascript
URL的参数中有加号传值变为空格的问题(URL特殊字符)
2016/11/04 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
Vue隐藏显示、只读实例代码
2018/07/18 Javascript
jQuery中常用动画效果函数知识点整理
2018/08/19 jQuery
原生JavaScript实现的无缝滚动功能详解
2020/01/17 Javascript
基于postman获取动态数据过程详解
2020/09/08 Javascript
[02:23]2014DOTA2国际邀请赛中国战队回顾
2014/08/01 DOTA
Python 删除整个文本中的空格,并实现按行显示
2018/07/24 Python
对python 操作solr索引数据的实例详解
2018/12/07 Python
python 实现字符串下标的输出功能
2020/02/13 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
2020/06/29 Python
python利用google翻译方法实例(翻译字幕文件)
2020/09/21 Python
matplotlib部件之矩形选区(RectangleSelector)的实现
2021/02/01 Python
nohup的用法
2014/08/10 面试题
Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
2015/01/27 面试题
写给学生的新学期寄语
2014/01/18 职场文书
社会实践感言
2014/01/25 职场文书
母亲追悼会答谢词
2014/01/27 职场文书
党的群众路线教育实践活动心得体会900字
2014/03/07 职场文书
主管会计岗位职责
2014/03/13 职场文书
投标承诺书范本
2014/03/27 职场文书
校园安全演讲稿
2014/05/09 职场文书
先进事迹材料怎么写
2014/12/30 职场文书
教师听课学习心得体会
2016/01/15 职场文书
如何书写邀请函?
2019/06/24 职场文书
Python实现单例模式的5种方法
2021/06/15 Python
MySQL令人大跌眼镜的隐式转换
2021/08/23 MySQL
解决MySQL添加新用户-ERROR 1045 (28000)的问题
2022/03/03 MySQL