深度学习中的Path问题

news/2024/7/8 4:04:22 标签: 深度学习, 人工智能

        在深度学习中涉及到诸多的模块与代码之间的相互调用,如果使用基础的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.niftyadmin.cn/n/5536308.html

相关文章

Land survey boundary report (template)

Land survey boundary report (template) 土地勘测定界报告(模板).doc

产品经理-工作流程及职能(6)

产品经理作为互联网项目的主心骨,连接着团队的所有成员(开发、设计、运营、测试、市场等) 用合理的产品规划和清晰的产品愿景带领大家前进,通过满足用户需求来创造属于自己的商业利益。 在通常情况下,PM需要对整个产品…

华为OD机试 - 考古学家 - 递归(Java 2024 D卷 200分)

华为OD机试 2024D卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(D卷C卷A卷B卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测…

【Whisper】WhisperX: Time-Accurate Speech Transcription of Long-Form Audio

Abstract Whisper 的跨语言语音识别取得了很好的结果,但是对应的时间戳往往不准确,而且单词级别的时间戳也不能做到开箱即用(out-of-the-box). 此外,他们在处理长音频时通过缓冲转录

如何创建一个基本的Mojolicious Web应用:探索Perl的现代Web框架

如何创建一个基本的Mojolicious Web应用:探索Perl的现代Web框架 Mojolicious是一个用Perl编写的简单、优雅的Web开发框架,它提供了一套丰富的工具和方法,让开发者能够快速构建高性能的Web应用。本文将详细介绍如何创建一个基本的Mojolicious…

如何在Ubuntu 14.04上安装和配置Postfix作为仅发送的SMTP服务器

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 介绍 Postfix 是一个 MTA(Mail Transfer Agent),用于发送和接收电子邮件的应用程序。在本教程中&am…

Java中的内存数据库与缓存技术

Java中的内存数据库与缓存技术 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 1. 内存数据库的概念与优势 1.1 什么是内存数据库? 内存数据库是…

[C++]——同步异步日志系统(2)

同步异步日志系统 一、 不定参函数1.1 不定参宏函数的使用1.2 C 语言中不定参函数的使用1.3 C不定参数使用 二、设计模式2.1 单列模式2.2 工厂模式2.3 建造者模式2.4 代理模式 在我们开发同步异步日志系统之前,需要了解一些相关的技术知识。 一、 不定参函数 在初学…