【编程】Python 文件目录

检查一个文件是否存在

开发 Python 程序,有时需要知道一个文件是否存在,python 提供了实现这些功能的内置函数。 包括:

  • os.path.isfile()
  • os.path.exists()
  • pathlib.path.exists() (Python 3.4+)
  • open() 和 try…except
  • os.path.isdir()

os.path.isfile()

这是最简单的检测文件存在性的方法。

import os.path 
filename = "my_file.txt"
if(os.path.isfile(/filepath/filename)):
print("文件存在!!")
else:
print("文件不存在!!")

如果文件存在,返回 true ,否则返回 false。

os.path.exists()

Python 的 os.path.exists() 方法检测指定的文件或路径是否存在,这个方法也可以检测文件描述符和给定路径的关联。有些操作系统,会根据文件的访问权限返回不同的结果。



检查文件,目录或文件夹的存在性

import os 
dirname = "temp"
filename = "my_file"
#检查目录是否存在
if(os.path.exists(dirname)):
print("目录存在")
else:
print("目录不存在")
#检查文件是否存在
if(os.path.exists(filename)):
print("文件存在")
else:
print("文件不存在")

pathlib 的 Path.exists() (Python 3.4+)

Python 用标准的文本串表示文件路径, Python 3.4 以后,可以用 pathlib 模块处理文件系统的路径。对于不同的操作系统,这个模块提供了标准的表示方法,减少不同系统的处理方法的差异。利用路径对象,检查文件的存在性。

import pathlib 
filename = "my_file.txt"
file = pathlib.Path(/filepath/filename)
if file.exists ():
print("文件存在!!")
else:
print("文件不存在!!")

如果这个文件存在,在返回真,否则返回假。

纯Windows路径

Python 的 pathlib 模块 , 路径类分为:纯路径,提供不带I/O的纯计算性操作,实体路径,继承自纯路径,提供I/O操作。有时需要使用纯路径,必然想在 unix机器上操作 Windows 路径,此时不能实例化 Windows 路径,但是可以实例化纯 Windows 路径。

open() 和 try…except

竞争性条件的检查非常重要,避免多个进程处理同一个文件带来的风险。同时需要使用异常捕获的程序结构,安全处理文件。

try:
myFile = open("d:/test.txt")
#文件处理
except IOError:
print("文件不存在!!")
finally:
myFile.close()

文件存在,可以正常操作,否则,会抛出异常错误。

异常处理的情况下,可以同时利用 “with” 语句,当发生异常时,文件可以被安全的自动关闭。

try:
with open(“d:/test.txt”) as myFile:
print(“文件存在!!”)
# 处理文件
except IOError:
print(“文件不存在!!”)

上面的代码使用有 with 的异常处理,减少了条件判断。

检查目录/文件夹的存在性

使用 Python os.path.isdir() 方法检查目录的存在性。

列出目录和子目录的文件

Python 的 os.listdir() 方法可以列出指定目录当中的全部文件和子目录。

权限

os.access() 方法可以校验给定目录和操作模式的处理权限。

os.access(path, mode)   

如果允许操作,返回真,否则返回假。

使用 access() 方法在 open()的同时检查文件的授权情况,提高效率。

import os 
mport os.path
filePath='./myfile.txt'
if os.path.isfile(filePath) and os.access(filePath, os.R_OK):
print("文件存在,且可读")
else:
print("文件不存在,或不可读")

Mode

  • os.F_OK: 检测路径存在性
  • os.R_OK: 检测路径的可读性
  • os.W_OK: 检测路径的可写性
  • os.X_OK: 检测路径的可执行性

os.access 不能在 Windows 系统中正常使用, W_OK 仅能检查只读性。对于 Windows 系统,如果不使用安全 API 接口,需要使用 try…except 代码结构捕获异常。

为了避免发生 FileNotFoundError: [Errno 2] No such file or directory(文件不存在) 的情况,在处理文件之前,都要先运用上面介绍的方法检测文件的存在性。



【编程】Python 目录操作
【编程】Python 使用Split
【编程】Python 读文件
【编程】Python 文件操作
【编程】python 写文件
【编程】Python 打开文件
【编程】Python 合并字典
【编程】Python 列表推导
【编程】Python 列表排序

此条目发表在人工智能, 服务器, 程序开发分类目录,贴了, , 标签。将固定链接加入收藏夹。