【Python】Python检查文件或文件夹路径是否存在

目录

问题背景

功能实现

代码解析


问题背景

在某些场景中,我们需要在使用文件或者文件夹前判断一下其是否存在,以防出现一些意外的报错,为了更好的使用该功能,可以把这个功能封装成为一个函数,具体实现如下:

功能实现

def check_path_exist(path,log)if os.path.exists(path):return Trueelse:dirname=os.path.dirname(path)basename=os.path.basename(path)log.write("ERROR:File/Dir[%s]does not existed in %s.\n"%(basename,dirname))return False

代码解析

os.path 库主要针对路径、文件名和目录名进行操作。

os.path.exists(path)


判断传入路径或文件描述符,判断路径是否存在或者描述符是否有效。因为os.path还有其他判断文件和路径的函数,为了方便,我们使用exists就可以包含 isfile()、isdir() 和 islink() 这些函数,使用这一个函数判断文件或目录或软链接是否存在就可以。

print(os.path.exists('/project/test'))

#输出:True print(os.path.exists('/project/test/test.py')) #输出:True

os.path.dirname(path)

返回path的路径部分,若path指向一个文件,则返回文件所在的目录路径; 若path指向一个目录,则返回此目录上层目录的路径。此函数就是以path中最后一个 \ 或 / 为标识截取的字符串。

print(os.path.dirname('/project/test/'))

#输出:'/project/test' print(os.path.dirname('/project/test'))

#输出:'/project'

os.path.basename(path)

该函数用于获取路径中的文件名部分,函数会返回路径中的最后一部分,即文件名或目录名。如果路径是以斜杠(/)结尾,则返回空字符串。

print(os.path.exists('/project/test/'))

#输出:空

print(os.path.exists('/project/test/test.py')) #输出:test.py

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

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

相关文章

大数据学习之Clickhouse

Clickhouse-23.2.1.2537 学习 一、Clickhouse概述 clickhouse 官网网址:https://clickhouse.com/ ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。 OLTP(联机事务处理系统)例如mysql等关系型数据库,在对于存储小数据量的时候&#xff…

基于IDEA调试模式与StopWatch工具类如何优雅实现Java代码执行时间检测统计

目录 1.1、前言1.2、开发环境1.3、传统方式实现1.4、优雅方式实现1.4.1、StopWatch工具简介1.4.2、实现步骤 1.1、前言 作为程序员在我们的日常编码过程中经常需要统计一段代码或者一个方法的执行时间,尤其是当以一个接口的执行响应时间比较长需要优化的时候&#x…

华为OD机考题(HJ41 称砝码)

前言 经过前期的数据结构和算法学习,开始以OD机考题作为练习题,继续加强下熟练程度。有需要的可以同步练习下。 描述 现有n种砝码,重量互不相等,分别为 m1,m2,m3…mn ; 每种砝码对应的数量为 x1,x2,x3...xn 。现在要…

基于PHP技术的校园论坛设计的设计与实现08586

基于PHP技术的校园论坛设计的设计与实现 摘 要 本项目旨在基于PHP技术设计与实现一个校园论坛系统,以提供一个功能丰富、用户友好的交流平台。该论坛系统将包括用户注册与登录、帖子发布与回复、个人信息管理等基本功能,并结合社交化特点,增强…

Vulkan学习——渲染3D模型

摘要:本文简要描述了Vulkan渲染一个3D模型需要做的事情,不会对太细节的内容进行深究。   关键字:Vulkan,Render,3D 源码 1 简介 1.1 Vulkan简介 Vulkan是一个低开销、跨平台的二维、三维图形与计算的应用程序接口(API&#x…

创意无界:探索国产创成式填充的无限潜力

在数字艺术与设计的世界中,创新技术不断涌现,而"创成式填充"无疑是其中的一颗璀璨新星。今天米兔要安利的这款国产ps插件-StartaAI拥有强大的AI功能,其AI扩图和局部重绘更是成为PS创成式填充的国产平替。 什么是创成式填充&#x…

PADS设置板框提示不闭合的解决办法

一般是选中join,提示不闭合,不能转成板框,其实直接点击close就好了,报错提示里就有提示,让用close命令试试

基于SpringBoot扶农助农政策管理系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,…

html页面可加密吗?

问:html页面可加密吗? 答:可以。 问:怎样加密? 答:看图:

VSCode无法识别 node、npm

一、前提 电脑新安装了node.js,在cmd查看node和npm版本没有问题,但是在VSCode无法识别 1.cmd查看版本: 2.VSCode报错信息: 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果…

面经-计算机基础

1.计算机⽹络 1.1 OSI与TCP/IP各层的结构与功能,都有哪些协议? 计算机网络体系结构 应⽤层 应⽤层 (application-layer )的任务是通过应⽤进程间的交互来完成特定⽹络应⽤。 应⽤层协议定 义的是应⽤进程(进程:主机中正在运⾏的程序&…

redis,memcached,nginx网络组件

课程目标: 1.网络模块要处理哪些事情 2.reactor是怎么处理这些事情的 3.reactor怎么封装 4.网络模块与业务逻辑的关系 5.怎么优化reactor? io函数 函数调用 都有两个作用:io检测 是否就绪 io操作 1. int clientfd accept(listenfd, &addr, &l…

Eclipse配置Tomcat时无Apache选项问题

有可能你会遇到,安装最新版本Eclipse,但是 Window——Preferences——Servers——Runtime Environments。发现没有Apache选项。,这是因为,默认没有安装J2EE组件,我们可以通过手动安装,来解决这个问题。 一…

utf8mb4和utf8的区别是什么?

阿里巴巴Java开发手册(嵩山版)中有如下规则: 12. 【参考】因国际化需要,所有的字符存储与表示,均采用 utf 8 字符集,那么字符计数方法需 要注意。 说明: SELECT LENGTH("轻松工作")&…

硬件实用技巧:cadence Aleego创建焊盘过程

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/140110911 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…

<电力行业> - 《第11课:配电(1)》

1 配电 配电(power distribution)是在电力系统中直接与用户相连并向用户分配电能的环节。配电系统由配电变电所、高压配电线路、配电变压器、低压配电线路以及相应的控制保护设备组成。 1.1 概念 配电系统是由多种配电设备(或元件&#xf…

vue2中vuedraggable设置部分元素不可拖拽,不可移动

文章目录 前言1、版本2、vuedraggable页面的具体使用3.核心(1) move官网说明(2) 注意点:(3) onDraggableMove方法 总结 前言 需求:左边是复选框,右边是选中的数据,编辑传入的数据不可拖拽,不可移动(其实还…

Datax快速使用之牛刀小试

前言 一次我发现业务他们在用 datax数据同步工具,我尤记得曾经 19 年使用过,并且基于当时的版本还修复了个 BUG并且做了数据同步管道的集成开发。没想到时间过的飞快,业务方基于海豚调度 2.0.6 的版本中有在使用,由于业务方还没有…

Python 连接 Doris pymysql游标cursor.excute(sql) 并且添加事务和自动重连操作

pymysql.cursors 普通连接: import pymysql.cursors conn pymysql.connect(host"127.0.0.1",port9030, user"root", password"", database"ssb", charsetutf8) mycursor conn.cursor() mycursor.execute("select *…

JDBC中如何处理数据库连接超时和SQL超时?

在JDBC(Java Database Connectivity)中,处理数据库连接超时和SQL执行超时是确保应用程序稳定性和性能的重要方面。以下是如何处理这两种超时的详细步骤: 1. 数据库连接超时 数据库连接超时通常发生在尝试与数据库建立连接时&…