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多线程和队列操作实例
Jun 21 Python
利用python实现命令行有道词典的方法示例
Jan 31 Python
Python排序搜索基本算法之归并排序实例分析
Dec 08 Python
mac安装scrapy并创建项目的实例讲解
Jun 13 Python
python3调用百度翻译API实现实时翻译
Aug 16 Python
python elasticsearch环境搭建详解
Sep 02 Python
python set集合使用方法解析
Nov 05 Python
Python多线程实现支付模拟请求过程解析
Apr 21 Python
python爬虫中PhantomJS加载页面的实例方法
Nov 12 Python
基于pycharm 项目和项目文件命名规则的介绍
Jan 15 Python
Python爬虫之爬取最新更新的小说网站
May 06 Python
Python实现Hash算法
Mar 18 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/24 PHP
php中的curl使用入门教程和常见用法实例
2014/04/10 PHP
PHP中的类型提示(type hinting)功能介绍
2015/07/01 PHP
PHP 设计模式系列之 specification规格模式
2016/01/10 PHP
JSON两种结构之对象和数组的理解
2016/07/19 PHP
THINKPHP3.2使用soap连接webservice的解决方法
2017/12/13 PHP
YII框架关联查询操作示例
2019/04/29 PHP
从Ajax到JQuery Ajax学习
2007/02/14 Javascript
基于JQuery的Select选择框的华丽变身
2011/08/23 Javascript
JS实现程序暂停与继续功能代码解读
2013/10/10 Javascript
基于PHP和Mysql相结合使用jqGrid读取数据并显示
2015/12/02 Javascript
laypage分页控件使用实例详解
2016/05/19 Javascript
浅谈jquery上下滑动的注意事项
2016/10/13 Javascript
微信小程序 参数传递实例代码
2017/03/20 Javascript
JavaScript ES6中const、let与var的对比详解
2017/06/18 Javascript
vue中各选项及钩子函数执行顺序详解
2018/08/25 Javascript
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
2018/12/12 Javascript
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
JavaScript实现简易聊天对话框(加滚动条)
2020/02/10 Javascript
python读取csv文件示例(python操作csv)
2014/03/11 Python
Python创建文件和追加文件内容实例
2014/10/21 Python
Django Admin实现上传图片校验功能
2016/03/06 Python
Linux上安装Python的PIL和Pillow库处理图片的实例教程
2016/06/23 Python
python实现登录与注册系统
2020/11/30 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
2021/01/27 Python
美国大尺码女装零售商:TORRID
2016/10/01 全球购物
泰国汽车、火车和轮渡票预订网站:Bus Online Ticket
2017/09/09 全球购物
西班牙电子产品购物网站:Electronicamente
2018/07/26 全球购物
请写出一段Python代码实现删除一个list里面的重复元素
2015/12/29 面试题
省优秀教师事迹材料
2014/01/30 职场文书
毕业证丢失证明范本
2014/09/20 职场文书
具结保证书
2015/01/17 职场文书
硕士学位申请报告
2015/05/15 职场文书
签字仪式主持词
2015/07/03 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
MySQL中使用or、in与union all在查询命令下的效率对比
2021/05/26 MySQL