判断目录是否存在并创建目录
- 一、实现上传文件功能
- 二、判断目录是否存在的办法
- 2.1、使用os模块
- 2.1.1、判断目录是否存在
- 2.1.2、os.makedirs():递归创建目录
- 2.2、使用pathlib模块
- 2.2.1、path.exist()判断目录是否存在
- 2.2.1、path.mkdir():创建目录
- 2.3、使用Try语句
一、实现上传文件功能
flask实现上传文件,在上一篇分享了flask实现文件上传的功能,若是文件存储的目录不存在会有个异常信息:
所以,在处理上传文件功能时,一定要先判断目录是否存在,不存在就创建目录,然后再调用save()
函数保存文件到服务器
二、判断目录是否存在的办法
2.1、使用os模块
2.1.1、判断目录是否存在
参考flask实现上传文件这里的代码,使用os.path.exists(path)
判断目录是否存在
同样地,也能判断文件是否存在:
import os
os.path.exists('/static/uploads/11.png')
此外,还有os.path.isfile()
方法用来判断是否是文件,os.path.isdir()
判断是否是目录登方法可使用。着重说一下os.makedirs()
方法。
2.1.2、os.makedirs():递归创建目录
存储的文件夹是个多级的,比如我要存到static/uploads/resource
目录下,但是我的项目目前只有一个static
目录,那么就需要调用该方法,创建多层目录
2.2、使用pathlib模块
2.2.1、path.exist()判断目录是否存在
使用pathlib需要先使用文件路径来创建path对象。此路径可以是文件名或目录路径。
import pathlib
path = pathlib.Path("path/file")
path.exist()
2.2.1、path.mkdir():创建目录
static_upload_path: Path = current_app.config['UPLOADFILE_PATH']
if not static_upload_path.exists():
static_upload_path.mkdir(parents=True)
2.3、使用Try语句
可以在程序中直接使用open()方法来检查文件是否存在和可读写。如下:
from flask import Flask
import os
app = Flask(__name__)
@app.route('/')
def file():
# if not os.path.exists('/static/uploads/file'):
# return 'ewr'
# os.path.isfile()
try:
f = open('/static/uploads/file')
f.close()
except FileNotFoundError:
return "File is not found"
if __name__ == '__main__':
app.run()