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程序与MySQL的教程
Apr 29 Python
在Lighttpd服务器中运行Django应用的方法
Jul 22 Python
python cx_Oracle的基础使用方法(连接和增删改查)
Nov 19 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
Apr 03 Python
pytorch 实现在预训练模型的 input上增减通道
Jan 06 Python
记录一下scrapy中settings的一些配置小结
Sep 28 Python
基于OpenCV的网络实时视频流传输的实现
Nov 15 Python
详解Python GUI编程之PyQt5入门到实战
Dec 10 Python
Python中Pyspider爬虫框架的基本使用详解
Jan 27 Python
教你用python控制安卓手机
May 13 Python
python pygame入门教程
Jun 01 Python
Python几种酷炫的进度条的方式
Apr 11 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实现var_export的详细介绍
2013/06/20 PHP
php基于base64解码图片与加密图片还原实例
2014/11/03 PHP
PHP连接MSSQL方法汇总
2016/02/05 PHP
jquery实现翻动fadeIn显示的方法
2015/03/05 Javascript
jquery实现的树形目录实例
2015/06/26 Javascript
jQuery插件简单实现方法
2015/07/18 Javascript
JS随机洗牌算法之数组随机排序
2016/03/23 Javascript
使用jQuery Mobile框架开发移动端Web App的入门教程
2016/05/17 Javascript
javascript滚轮控制模拟滚动条
2016/10/19 Javascript
jQuery按需加载轮播图(web前端性能优化)
2017/02/17 Javascript
微信小程序 聊天室简单实现
2017/04/19 Javascript
浅谈Vue.js 组件中的v-on绑定自定义事件理解
2017/11/17 Javascript
Vue父子模版传值及组件传值的三种方法
2017/11/27 Javascript
浅谈vue的props,data,computed变化对组件更新的影响
2018/01/16 Javascript
vue.js实现的全选与全不选功能示例【基于elementui】
2018/12/03 Javascript
微信小程序map组件结合高德地图API实现wx.chooseLocation功能示例
2019/01/23 Javascript
Angular7.2.7路由使用初体验
2019/03/01 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
2019/03/06 Javascript
如何检查一个对象是否为空
2019/04/11 Javascript
浅谈Vue页面级缓存解决方案feb-alive(上)
2019/04/14 Javascript
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
Python二分法搜索算法实例分析
2015/05/11 Python
python 表达式和语句及for、while循环练习实例
2017/07/07 Python
Python判断对象是否相等及eq函数的讲解
2019/02/25 Python
对python3中的RE(正则表达式)-详细总结
2019/07/23 Python
高考考python编程是真的吗
2020/07/20 Python
如何在Win10系统使用Python3连接Hive
2020/10/15 Python
Python 虚拟环境工作原理解析
2020/12/24 Python
pandas针对excel处理的实现
2021/01/15 Python
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
毕业生动漫设计求职信
2013/10/11 职场文书
对标管理实施方案
2014/03/12 职场文书
运动会广播稿100字
2014/09/14 职场文书
文明单位汇报材料
2014/12/24 职场文书
承诺书的签字人,需不需要承担相应的责任?
2019/07/09 职场文书
详解Python中__new__方法的作用
2022/03/31 Python