(python)系统路径和文件操作 —— os和pathlib

news2024/11/19 3:37:21

文章目录

  • 前言
  • 1、遍历目录下的文件


前言

pathlib 和 os 是 Python 中用于处理文件路径和文件系统操作的两个模块。os 模块提供了底层的操作系统相关功能;pathlib 提供了面向对象的路径操作接口。pathlib 模块实际上是在 os 模块的基础上进行了封装和扩展,提供了更高级别的接口,以简化路径操作和文件系统访问(如同C++和C的关系)

1、遍历目录下的文件

(1)简单操作代码如下,只为了获取文件夹里(包括所有子文件夹内)的所有图片:

import os
from pathlib import Path

dir_path = "/path"

# 使用 os 模块
for root, dirs, files in os.walk(dir_path):
    """
    root:正在遍历的文件夹路径
    dirs:一个包含当前文件夹中所有子文件夹的列表
    files:一个包含当前文件夹中所有文件名的列表
    """
    for file in files:
        print(os.path.join(root, file))

# 使用 pathlib 模块
for file in Path(dir_path).rglob("*"):
"""
 rglob("*") 表示匹配当前目录及所有子目录中的任意文件或目录
"""
    if file.is_file():
        print(file)  # 完整的绝对路径
    # if file.is_dir():
    #    print("当前目录",file)

(2)进阶——实际场景:一个数据集文件夹中含有多个子文件夹,每个子文件内包含有三个文件夹:mask,train,val。
在这里插入图片描述
在这里插入图片描述
在训练阶段,要单独读取所有train图片和与之对应的mask图片。(通常,原图格式为jpg,mask图为png)

dir_path = r'C:/Users/Desktop/test'

dirs = []
for make_dir in Path(dir_path).glob("**"):  # ** 表示匹配任意层级的子目录
    # print(make_dir)  
    # print(make_dir.name)  # 只读取最后一个目录,如mask,train,val
    if make_dir.name == "train":
        files = list(make_dir.glob("*.[jpb][nmp][pg]"))  # 匹配满足文件扩展名为 ".jpg"".png"".bmp" 的文件
        dirs += files  # 获取所有train文件夹里的图片
        print(f'path:{make_dir}  filenumber:{len(files)}   all_files:{len(dirs)}')

# i.parent.parent回到表示两层父级,如: C:/Users/Desktop/test/111
# i.with_suffix(".png").name表示将文件扩展名改为.png,再只保留name(图片名字)
mask_dir = [f'{i.parent.parent / "mask" / i.with_suffix(".png").name}' for i in dirs]  

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

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

相关文章

2023年中国车载导航仪产量、销量及市场规模分析[图]

车载导航仪是一种用于汽车上的电子设备,用于帮助驾驶员找到目的地并规划路线,它通常使用地图软件和GPS定位技术来确定车辆的位置,并提供语音和图形指示,以指导驾驶员前往目的地。 车载导航仪行业分类 资料来源:共研产…

又一个新指标可以写,氧化平衡评分,源自膳食以及生活方式

郑老师统计课程,欢迎点击报名:Nhanes公共数据库挖掘 课程 最近学习文献,发现新指标的使用在越来越NHANES数据库类的文章上占比越来越高。以往的研究证明饮食与生活方式与睡眠质量存在关联,本期我们要学习的文章推出了一个新指标&a…

使用免费SSL证书的好处

在互联网上保护用户隐私和数据安全是至关重要的。SSL证书是一种常见的安全解决方案,用于加密通信并验证网站的真实性。SSL(安全套接层)证书是一种数字证书,用于建立加密连接,保护数据的机密性和完整性。虽然商业SSL证书…

2023年【氧化工艺】考试报名及氧化工艺考试总结

题库来源:安全生产模拟考试一点通公众号小程序 氧化工艺考试报名是安全生产模拟考试一点通总题库中生成的一套氧化工艺考试总结,安全生产模拟考试一点通上氧化工艺作业手机同步练习。2023年【氧化工艺】考试报名及氧化工艺考试总结 1、【单选题】 由和O…

解决ConfigurationBuilder未包含“SetBasePath”的定义

在类库文件中使用ConfigurationBuilder读取json文件时提示ConfigurationBuilder未包含“SetBasePath”的定义。 解决方案: 包控制管理器安装这三个包,缺一不可 Microsoft.Extensions.Configuration Microsoft.Extensions.Configuration.FileExtensions…

FXL6408UMX一款完全可配置的8位12C控制GPIO扩展器

FXL6408UMX是一款8位I 2 C受控的GPIO扩展器。当配置为输入模式时,FXL6408监控用于数据转换的输入端口,并通过指定/ INT引脚的所有输入可配置上拉或下拉电阻,在漏极开路或非驱动应用场景预偏置输入。当配置为输出模式时, GPIO引脚根…

四元数数学性质、运算规则、线性插值(公式版)

四元数 Q ⟨ x , y , z , w ⟩ Q \langle x, y, z, w \rangle Q⟨x,y,z,w⟩ Q x i y j z k w Q xi yj zk w Qxiyjzkw 1.运算与性质 1)数乘 Q s ⋅ ⟨ x , y , z , w ⟩ ⟨ s ⋅ z , s ⋅ y , s ⋅ z , s ⋅ w ⟩ Q s \cdot \langle x, y, z, w \rangle \langle…

java击球小游戏运行代码

创建一个图形化的小游戏通常需要使用Java图形库,例如Swing或JavaFX。下面是一个使用JavaFX创建的简单的图形化小游戏示例,其中一个小球会在窗口内移动,你需要点击小球以增加得分: import javafx.application.Application; import…

淘宝开放平台 API 获取淘宝天猫店铺订单接口

业务场景:作为全球最大的 B2C 电子商务平台之一,淘宝(天猫)平台提供了丰富的商品资源,吸引了大量的全球买家和卖家。为了方便开发者接入淘宝平台,淘宝平台提供了丰富的 API 接口,其中商品详情接…

2023年【北京市安全员-A证】试题及解析及北京市安全员-A证证考试

题库来源:安全生产模拟考试一点通公众号小程序 北京市安全员-A证试题及解析是安全生产模拟考试一点通总题库中生成的一套北京市安全员-A证证考试,安全生产模拟考试一点通上北京市安全员-A证作业手机同步练习。2023年【北京市安全员-A证】试题及解析及北…

【大数据开发技术】实验06-SequenceFile、元数据操作与MapReduce单词计数

文章目录 SequenceFile、元数据操作与MapReduce单词计数一、实验目标二、实验要求三、实验内容四、实验步骤附:系列文章 SequenceFile、元数据操作与MapReduce单词计数 一、实验目标 熟练掌握hadoop操作指令及HDFS命令行接口掌握HDFS SequenceFile读写操作掌握Map…

Redis:用BitMap实现用户签到

BitMap 我们针对签到功能完全可以通过mysql来完成,比如说以下这张表 用户一次签到,就是一条记录,假如有1000万用户,平均每人每年签到次数为10次,则这张表一年的数据量为 1亿条 每签到一次需要使用(8 8…

某全球领先的芯片供应商:优化数据跨网交换流程,提高安全管控能力

1、客户介绍 某全球领先的芯片供应商,成立于2005年,总部设于北京,在国内上海、深圳、合肥等地及国外多个国家和地区均设有分支机构和办事处,致力于为客户提供更优质、便捷的服务。 2、建设背景 该公司基于网络安全管理的需求&am…

Qt中纯C++项目发布为dll的方法(超详细步骤)

目录 一般创建方法导出普通函数的方法&调用方法导出类及其成员函数的方法&调用方法 众所周知,我们可以将C项目中的类以及函数导出,形成 .dll 文件,以供其他程序使用,下面将说明Qt环境下的使用方法。 首先创建共享库&am…

吐血整理,服务端性能测试中间件-项目集成redis实战,一篇打通...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Linux下Redis安装…

《小狗钱钱》阅读笔记(六)

目录 幼儿园最开始的作用不是让小朋友受教育,而是为了提供一个场所让小朋友免于被剥削 弗里德里希福禄贝尔 早期 其实那些有大作为的人,你看到他们的时候,你看,大多小时候都是受到过很多挫折的,我不是说&#xff0c…

安装thinkphp6并使用多应用模式,解决提示路由不存在解决办法

1. 安装稳定版tp框架 composer create-project topthink/think tptp是安装完成的目录名称 ,可以根据自己需要修改。 如果你之前已经安装过,那么切换到你的应用根目录下面,然后执行下面的命令进行更新: composer update topthin…

HTML5+CSS3小实例:网页底部间隔波浪动画特效

实例:网页底部间隔波浪动画特效 技术栈:HTML+CSS 效果: 源码: 【html】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" content…

算法第一关-黄金挑战

环形链表 描述 : 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 LeetCode 141.环形链表 : 141. 环形链表 牛客 BM6 判断链表中是否有 : 分析 : 用HashS…

接口测试实战讲解

本次实战&#xff0c;我是从网上找的接口测试项目&#xff0c;该项目提供了详细的接口文档&#xff0c;我们可以通过学习接口文档来设计测试用例&#xff0c;最后再使用Jmeter进行实战。总的来说&#xff0c;这个项目很适合用来练手&#xff0c;项目网址&#xff1a;https://ww…