深度学习中的Path问题

        在深度学习中涉及到诸多的模块与代码之间的相互调用,如果使用基础的os.path来进行路径管理非常繁琐,所以在python3中一般使用自带的pathlib管理路径问题使得路径管理更加简单高效,下面介绍一些常用的Path方法,基本满足日常使用。

1. 提取文件名:

from pathlib import Path

img_path = Path(r"E:\pycharm\Retinex\result.jpg")
img_name = img_path.name

print(img_name)

  输出:

result.jpg

2. 提取当前目录

注:__file__: 这是一个内置变量,包含当前正在执行的 Python 脚本的路径(相对路径或绝对路径,取决于执行方式)。

from pathlib import Path

cur_path = Path(__file__)

print(cur_path)

输出:

E:\pycharm\Retinex\test.py

3. 提取父目录

from pathlib import Path

img_path = Path(r"E:\pycharm\Retinex\result.jpg")
parent_path = img_path.parent
parents0_path = img_path.parents[0]
parents1_path = img_path.parents[1]
parents2_path = img_path.parents[2]

print(parent_path, parents0_path, parents1_path, parents2_path, sep = '\n')

输出:

E:\pycharm\Retinex
E:\pycharm\Retinex
E:\pycharm
E:\

4. 切换绝对路径

from pathlib import Path

img_path = Path(r"./result.jpg")
abs_path = img_path.resolve()

print(abs_path)

输出:

E:\pycharm\Retinex\result.jpg

5. 提取文件后缀

from pathlib import Path

img_path = Path(r"E:\pycharm\Retinex\result.jpg")
path_suffix = img_path.suffix

print(path_suffix)

输出:

.jpg

6. 无后缀文件名

from pathlib import Path

img_path = Path(r"E:\pycharm\Retinex\result.jpg")
dir_no_suffix = img_path.stem

print(dir_no_suffix)

输出:

result

7. 遍历文件

from pathlib import Path

file_path = Path(r"E:\pycharm\Retinex\some_result")
for path in file_path.iterdir():
    print(path)

输出:

E:\pycharm\Retinex\some_result\10.png
E:\pycharm\Retinex\some_result\105.JPG
E:\pycharm\Retinex\some_result\105result.png
E:\pycharm\Retinex\some_result\106.JPG
E:\pycharm\Retinex\some_result\1078.jpg

8. 组合文件路径

from pathlib import Path

file_path = Path(r"E:\pycharm\Retinex")
img_path = file_path.joinpath(r"result.jpg")

print(img_path)

输出:

E:\pycharm\Retinex\result.jpg

9. 一些判断

.is_absolute()   # 是否绝对路径
.is_dir()   # 是否文件
.is_file()   # 是否文件夹
.exists()   # 是否存在
.isnumeric()   # 是否由数字组成
.endswith(".streams")   # 是否由".streams"结束

10. 匹配特定模式文件

from pathlib import Path

file_path = Path(r"E:\pycharm\Retinex\some_result")
for dir in file_path.glob("*.png"):
    print(dir)

输出:

E:\pycharm\Retinex\some_result\10.png
E:\pycharm\Retinex\some_result\105result.png
E:\pycharm\Retinex\some_result\10_111.png

11. sys.path

很多时候都会将代码的根目录在sys.path中进行添加,因为在一个项目中,可能有多个子模块和子包。在没有将根目录添加到 sys.path 的情况下,从一个子模块导入另一个子模块可能需要使用相对导入,这会使导入语句变得复杂且难以维护。

加入之后的路径就在执行器的默认搜索路径中了,我们导入该文件目录下的文件就可以直接导入:

例如,假设项目结构如下:

project_root/
    ├── module1/
    │   ├── __init__.py
    │   └── submodule1.py
    └── module2/
        ├── __init__.py
        └── submodule2.py

如果你想在 module2/submodule2.py 中导入 module1/submodule1.py,可以使用相对导入:

# 在 module2/submodule2.py 中
from ..module1 import submodule1

这种相对导入在复杂的项目中可能会变得混乱,并且在重构目录结构时容易出错。

通过将项目的根目录添加到 sys.path,可以使用绝对导入,使代码更清晰和简洁:

# 在 module2/submodule2.py 中
from module1 import submodule1

你学到了嘛!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

iPad手写笔哪款比较好?2024五款爆火iPad电容笔推荐!新手必看!

在iPad等触控设备日益普及的今天,手写笔作为提升生产力和创意表达的重要工具,正受到越来越多用户的青睐。然而,随着市场需求的激增,市面上电容笔品牌与型号繁多,跟风购买往往容易遭遇“踩雷”情况。因此,作…

【Linux】查找命令——which,type,find,whereis,locate

命令与文件的查找 文件的查找可就厉害了,因为我们常常需要知道哪个文件放在哪里,才能够对该文件进行一些修改或维护等操作。 有时候某些软件配置文件的文件名是不变的,但是各Linux发行版放置的目录则不同。 此时就要利用一些查找命令将该配…

iPad电容笔什么牌子好?2024最值得买的五款高性价比电容笔推荐!

现在平板和电容笔在一定程度上可以替代传统的笔和纸,不仅减少纸张浪费,还可以导入教材和习题册。只需携带它们就无需携带厚重的书本,这种环保、便捷、方便的特点吸引了越来越多的用户。但电容笔品牌的不断涌现,也让用户更加难以抉…

Wormhole Filters: Caching Your Hash on Persistent Memory——泛读笔记

EuroSys 2024 Paper 论文阅读笔记整理 问题 近似成员关系查询(AMQ)数据结构可以高效地近似确定元素是否在集合中,例如Bloom滤波器[10]、cuckoo滤波器[23]、quotient滤波器[8]及其变体。但AMQ数据结构的内存消耗随着数据规模的增长而快速增长…

管易云和金蝶云星空单据接口对接

管易云和金蝶云星空单据接口对接 数据源系统:金蝶云星空 金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上,提供了标准的管理模式;通过标准的业务架构:多会计准则、多币别、多地点、多组织、多税制应用框架等,有效支持企业的运营…

400G SR4和800G SR8光模块在AI集群中的应用

人工智能(AI)技术的快速发展下,AI集群的计算能力和数据传输需求不断提升。为了满足这一需求,光模块技术也在不断进步。高速率光模块作为新一代高速光通信解决方案,正在逐步应用于AI集群中,为其提供更高效、…

【带你全面了解 RAG,深入探讨其核心范式、关键技术及未来趋势】

文末有福利! 大型语言模型(LLMs)已经成为我们生活和工作的一部分,它们以惊人的多功能性和智能化改变了我们与信息的互动方式。 然而,尽管它们的能力令人印象深刻,但它们并非无懈可击。这些模型可能会产生…

google::protobuf命名空间下常用的C++ API----message.h

#include <google/protobuf/message.h> namespace google::protobuf 假设您有一个消息定义为: message Foo {optional string text 1;repeated int32 numbers 2; } 然后&#xff0c;如果你使用 protocol编译器从上面的定义生成一个类&#xff0c;你可以这样使用它: …

[C++][设计模式][访问器]详细讲解

目录 1.动机2.模式定义3.要点总结4.代码感受1.代码一2.代码二 1.动机 在软件构件过程中&#xff0c;由于需求的变化&#xff0c;某些类层次结构中常常需要增加新的行为(方法)&#xff0c;如果直接在基类中做这样的更改&#xff0c; 将会给子类带来很繁重的变更负担&#xff0c…

快手矩阵管理系统:开启短视频营销的智能时代

在短视频内容营销的浪潮中&#xff0c;快手矩阵管理系统以其独特的优势和功能&#xff0c;成为品牌和个人创作者不可或缺的工具。本文将详细解析快手矩阵管理系统的核心功能&#xff0c;探讨它如何帮助用户高效管理多平台、多账号的内容发布和互动。 快手矩阵管理系统概述 快…

【Java EE】Spring IOCDI

Spring IOC & DI 文章目录 Spring IOC & DI一、Spring是什么&#xff1f;二、IOC(控制反转)2.1 通俗理解2.2 造汽车的例子理解IOC2.3 IOC详解1. 获取Bean2. 方法注解——Bean1. 应用场景&#xff1a;2. 应用方法&#xff1a;3. 注意要点&#xff1a; 特别注意: 四、DI4…

Superset超火的企业级可视化BI分析工具

Superset&#xff0c;听起来就像是超级集合&#xff0c;确实&#xff0c;它几乎集合了所有你需要的数据功能。简单说&#xff0c;它就是一个现代化、功能强大的数据可视化工具。 它支持各种数据库&#xff0c;有着丰富的可视化选项&#xff0c;可以用来创建漂亮的数据仪表盘&a…

【数据清洗中分段线性插值法原理】

数据清洗中分段线性插值法原理 一、什么是分段线性插值法&#xff1f;二、分段线性插值法的数学原理三、分段线性插值法的应用步骤1. 引入库2. 创建示例数据3. 应用分段线性插值法4. 可视化插值结果 一、什么是分段线性插值法&#xff1f; 分段线性插值法通过在已知数据点之间…

【C语言】return 关键字

在C语言中&#xff0c;return是一个关键字&#xff0c;用于从函数中返回值或者结束函数的执行。它是函数的重要组成部分&#xff0c;负责将函数的计算结果返回给调用者&#xff0c;并可以提前终止函数的执行。 主要用途和原理&#xff1a; 返回值给调用者&#xff1a; 当函数执…

[leetcode hot 150]第一百一十七题,填充每个节点的下一个右侧节点

题目&#xff1a; 给定一个二叉树&#xff1a; struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针&#xff0c;让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点&#xff0c;则将 next 指针设置为 NULL 。 初始状态下&#x…

【图卷积网络】GCN基础原理简单python实现

基础原理讲解 应用路径 卷积网络最经典的就是CNN&#xff0c;其 可以提取图片中的有效信息&#xff0c;而生活中存在大量拓扑结构的数据。图卷积网络主要特点就是在于其输入数据是图结构数据&#xff0c;即 G ( V , E ) G(V,E) G(V,E)&#xff0c;其中V是节点&#xff0c;E是…

C语言 指针和数组——指针的算术运算

目录 指针的算术运算 指针加上一个整数 指针减去一个整数 指针相减 指针的关系比较运算 小结 指针的算术运算 指针加上一个整数 指针减去一个整数 指针相减 指针的关系比较运算 小结  指针变量 – 指针类型的变量&#xff0c;保存地址型数据  指针变量与其他类型…

关于SQL NOT IN判断失效的情况记录

1.准备测试数据 CREATE TABLE tmp_1 (val integer);CREATE TABLE tmp_2 (val integer, val2 integer);INSERT INTO tmp_1 (val) VALUES (1); INSERT INTO tmp_1 (val) VALUES (2); INSERT INTO tmp_2 (val) VALUES (1); INSERT INTO tmp_2 (val, val2) VALUES (NULL,0);2.测…

swiftui中设置建议最多5个tabItem项,多个tabItem项会被自动折叠起来

在swiftui中设置底部的菜单栏的时候&#xff0c;最多建议设置5个&#xff0c;如果超过了&#xff0c;会被自动折叠到More中&#xff0c;点击More就会出现类似list的样式显示&#xff0c;不是很友好。 最多按照5个默认设置的话&#xff0c;就会正常全部显示出来&#xff1a; 测…

(七)glDrawArry绘制

几何数据&#xff1a;vao和vbo 材质程序&#xff1a;vs和fs(顶点着色器和片元着色器) 接下来只需要告诉GPU&#xff0c;使用几何数据和材质程序来进行绘制。 #include <glad/glad.h>//glad必须在glfw头文件之前包含 #include <GLFW/glfw3.h> #include <iostrea…