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使用beautifulsoup从爱奇艺网抓取视频播放
Jan 23 Python
Python使用代理抓取网站图片(多线程)
Mar 14 Python
举例详解Python中的split()函数的使用方法
Apr 07 Python
怎样使用Python脚本日志功能
Aug 14 Python
python 读写、创建 文件的方法(必看)
Sep 12 Python
Python中property属性实例解析
Feb 10 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
May 23 Python
Django Admin中增加导出CSV功能过程解析
Sep 04 Python
Python实现自动签到脚本功能
Aug 20 Python
Python Unittest原理及基本使用方法
Nov 06 Python
使用Python解析Chrome浏览器书签的示例
Nov 13 Python
Flask使用SQLAlchemy实现持久化数据
Jul 16 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的无限分类实现想法~
2007/01/02 PHP
PHP Google的translate API代码
2008/12/10 PHP
PHP数组传递是值传递而非引用传递概念纠正
2013/01/31 PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
2013/06/23 PHP
php正则匹配html中带class的div并选取其中内容的方法
2015/01/13 PHP
Laravel中间件实现原理详解
2016/10/09 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
php面试中关于面向对象的相关问题
2019/02/13 PHP
JavaScript的eval JSON object问题
2009/11/15 Javascript
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
2010/12/02 Javascript
基于Jquery与WebMethod投票功能实现代码
2011/01/19 Javascript
JS获取整个页面文档的实现代码
2011/12/15 Javascript
一个判断抢购时间是否到达的简单的js函数
2014/06/23 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
2016/04/16 Javascript
confirm确认对话框的实现方法总结
2016/06/17 Javascript
jQuery获取浏览器类型和版本号的方法
2016/07/05 Javascript
jQuery 获取遍历获取table中每一个tr中的第一个td的方法
2016/10/05 Javascript
jquery+Jscex打造游戏力度条
2020/09/12 Javascript
AngularJS constant和value区别详解
2017/02/28 Javascript
input输入框内容实时监测(附代码)
2017/08/15 Javascript
详解Ubuntu安装angular-cli遇到的坑
2018/09/08 Javascript
vue动态删除从数据库倒入列表的某一条方法
2018/09/29 Javascript
在Python的Django框架中显示对象子集的方法
2015/07/21 Python
Python中将字典转换为列表的方法
2016/09/21 Python
Python信息抽取之乱码解决办法
2017/06/29 Python
python根据unicode判断语言类型实例代码
2018/01/17 Python
python numpy中cumsum的用法详解
2019/10/17 Python
python如何实现图片压缩
2020/09/11 Python
英国床垫在线:Mattress Online
2016/12/07 全球购物
荷兰牛仔裤网上商店:Jeans Centre
2018/04/03 全球购物
NFL官方在线商店:NFLShop
2020/07/29 全球购物
论文指导教师评语
2014/04/28 职场文书
个人业务学习心得体会
2016/01/25 职场文书
创业计划书之暑假培训班
2019/11/09 职场文书
Python Django框架介绍之模板标签及模板的继承
2021/05/27 Python
SpringDataJPA实体类关系映射配置方式
2021/12/06 Java/Android