0/前语

通常在读写文件之前,咱们需求先判别文件或许目录是否存在。
不然在接下来的处理中可能会报错。
所以在做任何操作之前,最好仍是先判别文件、目录是否存在。
下面将从介绍3种判别文件、目录是否存在的办法。
分别是os模块,try句子,pathlib模块

1/os模块

(1)判别文件是否存在

import os
os.path.exists(test_file.txt)
#True
os.path.exists(no_exist_file.txt)
#False

(2)判别文件夹是否存在

import os
os.path.exists(test_dir)
#True
os.path.exists(no_exist_dir)
#False

(3)其他

能够看出用os.path.exists()办法,判别文件和文件夹是一样。
其实这种办法仍是有个问题,假定你想查看“test_data”文件是否存在,
可是当时途径下有个叫“test_data”的目录,这样就可能呈现误判。
为了避免这样的情况,能够这样:
只查看文件
    import os
    os.path.isfile("test-data")
经过这个办法,假如文件”test-data”不存在将回来False,反之回来True。
即是文件存在,你可能还需求判别文件是否可进行读写操作。

(4)创立多层目录

os.makedirs(path)多层创立目录
比如:os.makedirs('/home/ai_user/')

(5)创立单层目录

os.mkdir(path)创立目录
import os
def mkdir(path):
    # 去除首尾的空格
    path=path.strip()
    # 去除尾部 \ 符号
    path=path.rstrip("\\")
    isExists=os.path.exists(path)
    # 判别成果
    if not isExists:
        # 假如不存在则创立目录
        # 创立目录操作函数
        os.makedirs(path) 
        print(path+' 创立成功')
        return True
    else:
        # 假如目录存在则不创立,并提示目录已存在
        print(path+' 目录已存在')
        return False
# 界说要创立的目录
mkpath="d:\\qttc\\web\\"
# 调用函数
mkdir(mkpath)
说明:
在以上DEMO的函数里,我并没有运用os.mkdir(path)函数,
而是运用了多层创立目录函数os.makedirs(path)。
这两个函数之间最大的区别是当父目录不存在的时分os.mkdir(path)不会创立,os.makedirs(path)则会创立父目录。
比如:比如中我要创立的目录web坐落D盘的qttc目录下,可是我D盘下没有qttc父目录,假如运用os.mkdir(path)函数就会提示我方针途径不存在,但运用os.makedirs(path)会自动帮我创立父目录qttc,然后在qttc目录下创立子目录web。

(6)判别文件是否能够读写

运用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()
假如你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目标。此途径能够是文件名或目录途径。
查看途径是否存在
import pathlib
path = pathlib.Path("path/file")
path.exist()   # True/False 
查看途径是否是文件
path = pathlib.Path("path/file")
path.is_file()