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

news2024/9/22 23:39:27

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1545766.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【优质】「web开发网页制作」html+css+js导盲犬网页制作(5页面)

导盲犬网页目录 涉及知识写在前面一、网页主题二、网页效果Page1、首页Page2、关于导盲犬Page3、阶段Page4、宣传视频Page5、登录 三、网页架构与技术3.1 脑海构思3.2 整体布局3.3 技术说明书 四、网页源码HtmlCSSJS 五、源码获取5.1 获取源码包 作者寄语 涉及知识 导盲犬介绍…

C++ primer 第十五章

1.OPP:概述 面向对象程序设计的核心思想是数据抽象、继承和动态绑定。 通过继承联系在一起的类构成一种层次关系,在层次关系的根部的是基类,基类下面的类是派生类 基类负责定义在层次关系中所有类共同拥有的成员,而每个派生类定义各自特有…

RAG笔记:常见问题以及解决方法

1 内容缺失 知识库中缺少必要的上下文信息。当知识库没有包含正确答案时,RAG 系统可能会给出一个貌似合理但实际上错误的回答,而不是明确表示它不知道答案。 1.1 解决方法 1.1.1 设置阈值 在回答问题前先设定一个质量标准。如果召回内容达不到标准或…

javaWeb项目-快捷酒店信息管理系统功能介绍

开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端:Vue、ElementUI 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog 项目关键技术 1、JSP技术 JSP(Java…

【数据结构与算法】直接插入排序和希尔排序

引言 进入了初阶数据结构的一个新的主题——排序。所谓排序,就是一串记录,按照其中的某几个或某些关键字的大小(一定的规则),递增或递减排列起来的操作。 排序的稳定性:在一定的规则下,两个值…

k8s入门到实战(四)—— k8s核心概念以及基本操作命令详细介绍

k8s 核心概念及操作命令 namespace(命名空间,简称 ns) k8s 资源创建的两种方式:使用命令行创建、使用 yaml 文件创建 什么是 ns 在 k8s 中,ns 是一种用于对集群资源进行逻辑分组和隔离的机制。它允许将 k8s 集群划…

鸿蒙开发实战:快速上手【万能卡片】

(一)练习准备 本案例使用HUAWEI DevEco Studio 3.0.0.800,API4-API7都可以体验,由于IDE版本与API不断升级与兼容性等问题,大家练习时可能会遇到一些细节上的差异,整体流程是一致的。 (二&…

实现Redis缓存预热的技巧与方法

🍎个人博客:个人主页 🏆个人专栏:Linux ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 什么是缓存预热? 缓存预热的作用 如何实现Redis缓存预热? 结语 我的其他博客 前言 在实际的软件开发中…

Retrieval Augmented Thoughts(RAT):检索增强思维,实现长视野生成中的上下文感知推理

论文地址:https://arxiv.org/pdf/2403.05313.pdf 原文地址:rat-retrieval-augmented-thoughts Github:Implementation of RAT 2024 年 3 月 14 日 介绍 让我首先从一些一般性观察开始...... 在生成式人工智能应用程序中实现效率与生成响应…

一文看懂,如何精细化地进行跨域文件管控

随着企业规模的扩大和分支机构的增多,会出现不同地理位置、组织机构或网络安全域之间进行文件交换的场景。 像很多金融机构在全国或全球范围内会设立不同的分支机构和办事处,因此会存在不同组织机构之间的数据流转,即跨域文件传输。跨域文件传…

Unity Mobile Notifications推送问题

1.在部分机型点击通知弹窗进不去游戏 把这里改成自己的Activity 2.推送的时候没有横幅跟icon红点 主要是第一句话 注册的时候选项可以选择 defaultNotificationChannel new AndroidNotificationChannel(“default_channel”, “Default Channel”, “For Generic notifica…

Java学习笔记(21)

IO流 字节流 字符流 纯文本文件 Fileoutputstream 注意点 如果不释放资源,java会一直占用该文件,外部无法删除掉该文件 写数据 换行写 用字符串的getBytes()得到字符数组 \r\n 续写 Fileinputstream Read 一次只读一个字符&am…

深入解析ECC(椭圆曲线密码学)加解密算法

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 本文将详细介绍ECC(椭圆曲线密码学)加解密算法的原理、特点及应用。ECC作为一种新型的公钥密码体制&#…

低压扫描电镜(LVSEM)为主流低压电子显微镜产品 未来需向多功能方向发展

低压扫描电镜(LVSEM)为主流低压电子显微镜产品 未来需向多功能方向发展 低压扫描电子显微镜,简称低压扫描电镜,英文简称LVSEM,是一种在较小加速电压条件下工作的、利用低能电子束扫描样品进行成像的电子显微镜。低压扫…

NVIDIA NIM 提供优化的推理微服务以大规模部署 AI 模型

NVIDIA NIM 提供优化的推理微服务以大规模部署 AI 模型 生成式人工智能的采用率显着上升。 在 2022 年 OpenAI ChatGPT 推出的推动下,这项新技术在几个月内就积累了超过 1 亿用户,并推动了几乎所有行业的开发活动激增。 到 2023 年,开发人员…

图像抠图DIS——自然图像中高精度二分图像抠图的方法(C++/python模型推理)

概述 DIS(Dichotomous Image Segmentation)是一种新的图像分割任务,旨在从自然图像中分割出高精度的物体。与传统的图像分割任务相比,DIS更侧重于具有单个或几个目标的图像,因此可以提供更丰富准确的细节。 为了研究…

cuda安装和下载for windows

cuda下载 英伟达cuda官方下载地址 https://developer.nvidia.com/cuda-downloads?target_osWindows&target_archx86_64&target_version11&target_typeexe_local 安装 直接一直点下一步即可,注意要注册账号,用微信扫码直接登录即可 win…

一篇文章给你讲清楚正常卷积与深度可分离卷积

文章目录 正常卷积深度可分离卷积深度卷积逐点卷积 对比代码实现查看(torch实现)结果 正常卷积 也就是我们平常用的比较普遍的卷积: 它的参数量是:112,即: ( 卷积核大小) ∗ 输入通道 ∗ 输出…

【随笔】Git -- 常用命令(四)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

【python】flask模板渲染引擎Jinja2,使得前后端交互更加便捷

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…