当前位置:首页 > 编程问答 >

Python如何判断文件的存在

提问时间:2020年06月04日 09:40:37问题被 165 网友关注
共 1 个关于“Python如何判断文件是否存在”精选答案
曾瑾瑜
推荐于:2020-06-04
最佳回答

这里介绍三种判断文件或文件夹是否存在的方法,分别使用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)

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(<file/path>)

如果你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()

 

参考资料

  • Python3零起点教程出版社:Python3官网 作者:廖雪峰
  • 零起点Python大数据与量化交易出版社:电子工业出版社 作者:何海群
  • Python3爬虫、数据清洗与可视化实战出版社:电子工业出版社 作者:零一
  • Python面试合集(史上最全面Python面试题和详解)出版社:Python社区 作者:Ms.任伟泽
  • Keras快速上手:基于Python的深度学习实战出版社:电子工业出版社 作者:谢梁
  • 相关问题

  • Python根据文件名查找数据文件功能代码详解02-08
  • python提取wav文件的mfcc方法详解06-08
  • Python中glob模块查找文件路径的实例方法11-23
  • Python对CSV、Excel、txt、dat文件处理的代码详解02-02
  • Python重命名多个文件的实例方法02-07
  • python文件操作写在指定的行方法整理11-16
  • python获取当前文件夹下所有文件名方法步骤02-11
  • Python实现逐行分割大txt文件示例详解01-15
  • python3 flask实现文件上传的代码11-23
  • python引用另一个文件的函数的方法02-26
  • 如何在Python解压缩ZIP文件02-18
  • python:pandas合并csv文件的实例内容02-04
  • Python实现文字转语音并生成wav文件的实例代码12-19
  • 《Python编程:从入门到实践》第十章:文件和异常12-01
  • 详解python使用lxml操作xml格式文件02-29
  • 更多答案
    网友NO.947243

    08-26

    Python实现判断一行代码是否为注释的方法, 目前的编辑器大都可以自动检测某一行代码是否为代码行或注释行,但并不太提供代码行/注释行行数的统计,对于大量代码文件的代码行/注释行统计,就更少见一些。本篇文章试用一段Python脚本来实现这一目标,并希望可以兼容统计不同语言编写的代码。 注释符号的研究 我们先来关注常见语言的注释符号构成。一般来讲注释符号分为单行注释符和多行注释符,以Python为例,则分别为#和'''(或""")。由于多行注释符会影响后续行的判断,所以在遍历各行时必须存在一个标志位multiCmtFlagIdx,来记录是否已经开始多行注释,以及多行注释的符号为哪一种。有了该判断之后,才可以继续对后续的字符进行分析……

    网友NO.872639

    08-26

    python if not in 多条件判断代码, 百度作业帮提问: python if not in 多条件 判断怎么写 s = ['1','2'] 判断条件 sta = "12345" 正常的是这样的, if "1" not in sta and "2" not in sta: print sta 这要是知道条件的还行, 要是判断条件有很多 这种方法肯定就不行了? 怎么用一个公式 满足上面的判断? 下面写个伪代码,给大家熟悉一下即可。。。 需求为,内容中不得出现 '招聘', '诚聘', '社招' 等关键字,符合条件的才打印出来。。 #!/usr/bin/env python# -*- coding: gbk -*-# -*- coding: utf_8 -*-# Date: 2016/5/13# Created by 独自等待# 博客 http://www.waitalone.cn/filters = ['招聘', '诚聘', '社招']contents = [ '独自等待安全团队诚聘, //www.jb51.net/', '独自等待安全团队招聘, //www.jb51.net/', '独自等……

    网友NO.753746

    06-03

    python判断字符串或者集合是否为空的实例, 最近在看《Effective Python》,里面提到判断字符串或者集合是否为空的原则,原文如下: Don't check for empty values (like [] or '') by checking the length (if len(somelist) == 0). Use if not somelist and assume empty values implicity evaluate to False. 意即,不要通过取字符串或者集合的长度来判断是否为空,而是要用not关键字来判断,因为当字符串或集合为空时,其值被隐式地赋为False. 例子如下 somestr='' sometuple=() somelist=[] somedict={} not somestrTrue not sometupleTrue not somelistTrue not somedictTrue Ps. 集合包括list, tuple, dict 以上这篇python判断字符串或者集合是否为空的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持……

    <
    1
    >

    Copyright 2018-2020 www.xz577.com 码农之家

    版权投诉 / 书籍推广 / 赞助:520161757@qq.com