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 相关文章推荐
详解Django中的过滤器
Jul 16 Python
python创建列表并给列表赋初始值的方法
Jul 28 Python
Python验证文件是否可读写代码分享
Dec 11 Python
python Web开发你要理解的WSGI & uwsgi详解
Aug 01 Python
详解通过API管理或定制开发ECS实例
Sep 30 Python
python中字典按键或键值排序的实现代码
Aug 27 Python
python3实现在二叉树中找出和为某一值的所有路径(推荐)
Dec 26 Python
python爬虫用mongodb的理由
Jul 28 Python
python -v 报错问题的解决方法
Sep 15 Python
PyCharm最新激活码PyCharm2020.2.3有效
Nov 18 Python
Python lxml库的简单介绍及基本使用讲解
Dec 22 Python
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
Jun 08 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
模拟SQLSERVER的两个函数:dateadd(),datediff()
2006/10/09 PHP
php 时间计算问题小结
2009/01/04 PHP
php设计模式 Chain Of Responsibility (职责链模式)
2011/06/26 PHP
php封装好的人民币数值转中文大写类
2015/12/20 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
2017/04/27 PHP
thinkphp中的多表关联查询的实例详解
2017/10/12 PHP
JS图片浏览组件PhotoLook的公开属性方法介绍和进阶实例代码
2010/11/09 Javascript
js 距离某一时间点时间是多少实现代码
2013/10/14 Javascript
我的NodeJs学习小结(一)
2014/07/06 NodeJs
jquery实现个人中心导航菜单效果和美观都非常不错
2014/09/02 Javascript
浅析node.js中close事件
2014/11/26 Javascript
JQuery报错Uncaught TypeError: Illegal invocation的处理方法
2015/03/13 Javascript
JS实现将数字金额转换为大写人民币汉字的方法
2016/08/02 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
2017/10/25 Javascript
echarts实现词云自定义形状的示例代码
2019/02/20 Javascript
用Python编写一个简单的Lisp解释器的教程
2015/04/03 Python
简介二分查找算法与相关的Python实现示例
2015/08/26 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
2019/07/15 Python
Python input函数使用实例解析
2019/11/22 Python
解决python DataFrame 打印结果不换行问题
2020/04/09 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
2020/06/09 Python
python实现简单的五子棋游戏
2020/09/01 Python
CSS3与动画有关的属性transition、animation、transform对比(史上最全版)
2017/08/18 HTML / CSS
HTML5录音实践总结(Preact)
2020/05/07 HTML / CSS
ASICS印度官方网站:日本专业运动品牌
2020/06/20 全球购物
List、Map、Set三个接口,存取元素时,各有什么特点?
2015/09/27 面试题
"引用"与多态的关系
2013/02/01 面试题
组织关系转移介绍信
2014/01/16 职场文书
气象学专业个人求职信
2014/03/15 职场文书
会计专业个人自我鉴定
2014/03/21 职场文书
综治宣传月活动总结
2014/04/28 职场文书
大学课外活动总结
2014/07/09 职场文书
会计学专业求职信
2014/07/17 职场文书
社区服务活动报告
2015/02/05 职场文书
搬迁通知
2015/04/20 职场文书
2015年“7.11”世界人口日宣传活动方案
2015/05/06 职场文书