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进行AES加密和解密的示例代码
Feb 02 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
May 04 Python
详解django中使用定时任务的方法
Sep 27 Python
Python3实现的旋转矩阵图像算法示例
Apr 03 Python
Python 实现交换矩阵的行示例
Jun 26 Python
python按修改时间顺序排列文件的实例代码
Jul 25 Python
python2与python3爬虫中get与post对比解析
Sep 18 Python
利用python批量爬取百度任意类别的图片的实现方法
Oct 07 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
Jan 27 Python
python-for x in range的用法(注意要点、细节)
May 10 Python
解决pytorch读取自制数据集出现过的问题
May 31 Python
python使用matplotlib绘制图片时x轴的刻度处理
Aug 30 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的SQL注入过程分析
2012/01/06 PHP
洪恩在线成语词典小偷程序php版
2012/04/20 PHP
迁移PHP版本到PHP7
2015/02/06 PHP
PHP实现中文圆形印章特效
2015/06/19 PHP
PHP多态代码实例
2015/06/26 PHP
用js小类库获取浏览器的高度和宽度信息
2012/01/15 Javascript
Javascript计算两个marker之间的距离(Google Map V3)
2013/04/26 Javascript
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
2013/04/26 Javascript
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
基于jQuery实现的旋转彩圈实例
2015/06/26 Javascript
JavaScript代码实现图片循环滚动效果
2020/03/19 Javascript
基于 Vue.js 2.0 酷炫自适应背景视频登录页面实现方式
2018/01/17 Javascript
vue 引入公共css文件的简单方法(推荐)
2018/01/20 Javascript
快速解决Vue项目在IE浏览器中显示空白的问题
2018/09/04 Javascript
JS+HTML5 canvas绘制验证码示例
2018/12/05 Javascript
vue基于两个计算属性实现选中和全选功能示例
2019/02/08 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
2019/04/17 Javascript
环形加载进度条封装(Vue插件版和原生js版)
2019/12/04 Javascript
python构建自定义回调函数详解
2017/06/20 Python
python实现接口并发测试脚本
2019/06/25 Python
python 设置输出图像的像素大小方法
2019/07/04 Python
Python Web程序搭建简单的Web服务器
2019/07/31 Python
pytorch制作自己的LMDB数据操作示例
2019/12/18 Python
使用python matplotlib 画图导入到word中如何保证分辨率
2020/04/16 Python
python实现银行账户系统
2021/02/22 Python
html5的新玩法——语音搜索
2013/01/03 HTML / CSS
日本最新流行服饰网购:Nissen
2016/07/24 全球购物
大学生毕业自我鉴定范文
2013/09/19 职场文书
学生发电厂实习自我鉴定
2013/09/22 职场文书
英语专业应届生求职信范文
2013/11/15 职场文书
人事部主管岗位职责
2013/12/26 职场文书
阿德的梦教学反思
2014/02/06 职场文书
法制教育观后感
2015/06/17 职场文书
68句权威创业名言
2019/08/26 职场文书
python 如何获取页面所有a标签下href的值
2021/05/06 Python
Springboot-cli 开发脚手架,权限认证,附demo演示
2022/04/28 Java/Android