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表数据的方法
Sep 23 Python
Django中使用Celery的教程详解
Aug 24 Python
用于业余项目的8个优秀Python库
Sep 21 Python
Pandas GroupBy对象 索引与迭代方法
Nov 16 Python
Python学习笔记之For循环用法详解
Aug 14 Python
简单分析python的类变量、实例变量
Aug 23 Python
python创建子类的方法分析
Nov 28 Python
Python高阶函数、常用内置函数用法实例分析
Dec 26 Python
使用Tensorboard工具查看Loss损失率
Feb 15 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
Nov 24 Python
python中threading和queue库实现多线程编程
Feb 06 Python
Python操作CSV格式文件的方法大全
Jul 15 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 模拟$_PUT实现代码
2010/03/15 PHP
《PHP编程最快明白》第八讲:php启发和小结
2010/11/01 PHP
php+ajax做仿百度搜索下拉自动提示框(有实例)
2012/08/21 PHP
php实现处理输入转义字符的代码
2015/11/08 PHP
WordPress开发中用于标题显示的相关函数使用解析
2016/01/07 PHP
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
JSON 学习之JSON in JavaScript详细使用说明
2010/02/23 Javascript
nodejs教程 安装express及配置app.js文件的详细步骤
2013/05/11 NodeJs
addEventListener 的用法示例介绍
2014/05/07 Javascript
JavaScript中Function详解
2015/02/27 Javascript
jQuery判断一个元素是否可见的方法
2015/06/05 Javascript
JavaScript的jQuery库中ready方法的学习教程
2015/08/14 Javascript
AngularJS入门教程之ng-checked 指令详解
2016/08/01 Javascript
如何以Angular的姿势打开Font-Awesome详解
2018/04/22 Javascript
javascript实现函数柯里化与反柯里化过程解析
2019/10/08 Javascript
小程序自定义圆形进度条
2020/11/17 Javascript
vue监听滚动事件的方法
2020/12/21 Vue.js
wxpython 学习笔记 第一天
2009/02/09 Python
Python实现多行注释的另类方法
2014/08/22 Python
python中urllib模块用法实例详解
2014/11/19 Python
详解Python中__str__和__repr__方法的区别
2015/04/17 Python
python实现requests发送/上传多个文件的示例
2018/06/04 Python
详解python之协程gevent模块
2018/06/14 Python
python Pandas如何对数据集随机抽样
2019/07/29 Python
详解numpy矩阵的创建与数据类型
2019/10/18 Python
python 使用三引号时容易犯的小错误
2020/10/21 Python
意大利独特而优质的家居用品:Fazzini
2018/12/05 全球购物
俄罗斯便宜的在线服装商店:GroupPrice
2020/04/10 全球购物
Linux上比较文件的命令都有哪些
2012/02/24 面试题
计算机工程学院个人求职信
2013/10/05 职场文书
师范生自荐信范文
2013/10/06 职场文书
给交警的表扬信
2014/01/12 职场文书
《伯牙绝弦》教学反思
2014/03/02 职场文书
班主任工作实习计划
2015/01/16 职场文书
三好学生个人总结
2015/02/15 职场文书
预备党员考察表党小组意见
2015/06/01 职场文书