当前位置: 首页 > news >正文

python 中判断文件、目录是否存在的方法

判断目录是否存在并创建目录

      • 一、实现上传文件功能
      • 二、判断目录是否存在的办法
        • 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 pathlibpath = 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()

三、写在最后

宣传一波:大家若是有人想北京租房可以联系我,主要是物资学院、通州北关、北苑、草房的房子。(注:我不是中介哟,我也不打算转行做中介,是我靠谱的朋友在做)

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 阿里云部署OneApi
  • 关于分布式系统设计的个人看法和经验
  • 2024-03-27 作业
  • CPP容器vector和list,priority_queue定义比较器
  • 基于DWT(离散小波变换)的图像水印算法,Matlab实现
  • 低功耗、低成本 NAS 的可能性
  • Navicat 干货 | 探索 PostgreSQL 的外部数据包装器和统计函数
  • 江协STM32:点亮第一个LED灯和流水灯
  • AQS源码分析
  • vc_red.msi 错误
  • 3.1 SQL概述
  • c++红黑树
  • 混合云构建-使用 Azure ExpressRoute 建立从本地到 Azure 虚拟网络的专用连接
  • 记录一次Vcenter跨VDS网络迁移
  • TCP重传机制详解——02SACK
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • css的样式优先级
  • golang 发送GET和POST示例
  • Intervention/image 图片处理扩展包的安装和使用
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • PAT A1120
  • React-生命周期杂记
  • Shadow DOM 内部构造及如何构建独立组件
  • 当SetTimeout遇到了字符串
  • 技术胖1-4季视频复习— (看视频笔记)
  • 前嗅ForeSpider中数据浏览界面介绍
  • 山寨一个 Promise
  • 什么是Javascript函数节流?
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • $.proxy和$.extend
  • $nextTick的使用场景介绍
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (C语言)共用体union的用法举例
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (STM32笔记)九、RCC时钟树与时钟 第一部分
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (定时器/计数器)中断系统(详解与使用)
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (黑马C++)L06 重载与继承
  • (十二)Flink Table API
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • .ai域名是什么后缀?
  • .net 4.0发布后不能正常显示图片问题
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .net 按比例显示图片的缩略图
  • .NET 设计模式初探
  • .NET 药厂业务系统 CPU爆高分析
  • .net6 webapi log4net完整配置使用流程