Python判断文件是否存在的三种方法

專 欄

❈Jerry,Python中文社区专栏作者。

blog:https://my.oschina.net/jhao104/blog

github:https://github.com/jhao104

通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错。所以最好在做任何操作之前,先判断文件是否存在。

这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块、Try语句、pathlib模块。

1.使用os模块

os模块中的os.path.exists()方法用于检验文件是否存在。

1、判断文件是否存在

2、判断文件夹是否存在

可以看出用os.path.exists()方法,判断文件和文件夹是一样。

其实这种方法还是有个问题,假设你想检查文件“test_data”是否存在,但是当前路径下有个叫“test_data”的文件夹,这样就可能出现误判。为了避免这样的情况,可以这样:

3、只检查文件

通过这个方法,如果文件"test-data"不存在将返回False,反之返回True。

即是文件存在,你可能还需要判断文件是否可进行读写操作。

判断文件是否可做读写操作

使用os.access()方法判断文件是否可进行读写操作。

语法:

path为文件路径,mode为操作模式,有这么几种:

该方法通过判断文件路径是否存在和各种访问模式的权限返回True或者False。

2.使用Try语句

可以在程序中直接使用open()方法来检查文件是否存在和可读写。

语法:

如果你open的文件不存在,程序会抛出错误,使用try语句来捕获这个错误。

程序无法访问文件,可能有很多原因:

1、如果你open的文件不存在,将抛出一个FileNotFoundError的异常;

2、文件存在,但是没有权限访问,会抛出一个PersmissionError的异常。

所以可以使用下面的代码来判断文件是否存在:

其实没有必要去这么细致的处理每个异常,上面的这两个异常都是IOError的子类。所以可以将程序简化一下:

使用try语句进行判断,处理所有异常非常简单和优雅的。而且相比其他不需要引入其他外部模块。

3. 使用pathlib模块

pathlib模块在Python3版本中是内建模块,但是在Python2中是需要单独安装三方模块。

使用pathlib需要先使用文件路径来创建path对象。此路径可以是文件名或目录路径。

检查路径是否存在

检查路径是否是文件

原文发布于微信公众号 - Python中文社区(python-china)

原文发表时间:2017-07-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏idba

Python模块之fileinput

一 简介 fileinput 是python 提供的一个可以快速遍历,修改一个或者多个文件的模块。我们可以使用该模块进行文本替换 并做文件备份。

782
来自专栏码生

python 中文处理方法

python 中如果没有指定编码方式的话,那么默认支持的是ASCII码,如果出现中文则会报错,即便中文是注释也不行

1151
来自专栏运维小白

9.2 grep(中)

grep用法 grep -n 'root' /etc/passwd grep -nv 'nologin' /etc/passwd grep '[0-9]'/et...

1907
来自专栏iOS开发笔记

iOS开发之单例模式你用对了吗

、 单例在iOS开发中可以说是很常见的一种设计模式,在你的项目中或许你已经用过很多次,大家可能都会想不就是单例吗,我闭着眼睛单手就能写。是的,单例可以说是所有设...

934
来自专栏社区的朋友们

django 初始化默认数据的一个方法

经常可能会有的一个需求就是,一个表中会有一些默认数据,这些数据未来是可以通过管理端来配置的。所以数据库在被建立之后,会有一些默认数据被插入表中。

2.7K3
来自专栏JavaQ

高并发编程-happens-before

happens-before是Java内存模型中定义的两个操作之间的偏序关系,即如果操作A在操作B之前先发生,那么操作A产生的操作结果,操作B可以观察到,或者说...

862
来自专栏地方网络工作室的专栏

推荐一个命名变量的神奇网站 CODELF

推荐一个命名变量的神奇网站 CODELF 在我们写程序的时候,总是需要去给各种变量命名。于是各种命名大法都上来了,有拼音的,有首字母缩写的,各种各样。而我们推荐...

3017
来自专栏数据结构与算法

22:紧急措施

22:紧急措施 总时间限制: 1000ms 内存限制: 65536kB描述 近日,一些热门网站遭受黑客入侵,这些网站的账号、密码及email的数据惨遭泄露。你...

3908
来自专栏FreeBuf

Node.js中的内存泄漏分析

内存泄漏(Memory Leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。如果内存泄漏的位置比较关键,那么随着处理的进行可能持有越来越多的无用...

5225
来自专栏行者常至

(Servlet)常见错误及解决方式

·404数字 指的是:服务器执行完客户端的请求后,返回给客户端一个执行结果的状态编码。

844

扫码关注云+社区

领取腾讯云代金券