Python 实现的路径解析,url解析处理类

2024-01-21

# !/usr/bin/python3
# -*- coding:utf-8 -*-
"""
@author: JHC000abc@gmail.com
@file: util_class.py
@time: 2024/1/16 17:06
@desc:

"""
import os


class PathParser(object):
    """
    path 解析相关类
    """

    def __init__(self, path):
        """

        :param path:
        """
        self.path = os.path.abspath(path)
        self.tail = os.path.splitext(self.path)[-1][1:]
        self.name = os.path.basename(self.path).split(".")[0]
        self.header = os.path.dirname(self.path)

    def __str__(self):
        """
        print() 自动调用
        :return:
        """
        return f"Path: {self.path}\nTail: {self.tail}\nName: {self.name}\nHeader: {self.header}"


class PathMerge(object):
    """
    path 合并类
    """

    def __init__(self, path: PathParser = None, header=None, name=None, tail=None, create=False):
        """

        :param path:
        :param name:
        :param tail:
        :param header:
        """
        if path:
            self.header = path.header
            self.name = path.name
            self.tail = path.tail
        else:
            if header and name and tail:
                self.header = header
                self.name = name
                self.tail = tail
            else:
                raise ValueError("PathParser: 参数不完整 header, tail, name")
        if create:
            os.makedirs(self.header, exist_ok=True)
        self.path = f"{self.header}{os.sep}{self.name}.{self.tail}"

    def __str__(self):
        """
        print() 自动调用
        :return:
        """
        return f"Path: {self.path}"


class URLParser(object):
    """
    URL 解析相关类
    """

    def __init__(self, url):
        """

        :param url:
        """
        self.url = url
        url_split_double = url.split("://")
        url_split_single = url_split_double[1].split("/")
        self.protocol = url_split_double[0]
        self.host = url_split_single[0]
        self.path_lis = url_split_single[1:-1]
        self.path = "/".join(self.path_lis)
        try:
            self.name, self.tail = url_split_single[-1].split(".")
        except BaseException:
            self.name = url_split_single[-1].split(".")[0]
            self.tail = ""

    def __str__(self):
        """
        print() 自动调用
        :return:
        """
        return f"URL: {self.url}\nPROTOCOL: {self.protocol}\nHOST: {self.host}\nPATH: {self.path}\nPATH_LIS: {self.path_lis}\nNAME: {self.name}\nTAIL: {self.tail}"


class UrlMerge(object):
    """
    URL 合并类
    """

    def __init__(self, protocol=None, host=None, path=None, name=None, tail="", obj: URLParser = None):
        """
        :param url:
        """
        if obj:
            self.protocol = obj.protocol
            self.host = obj.host
            self.path = obj.path
            self.name = obj.name
            self.tail = obj.tail
        else:
            if protocol and host and path and name:
                self.protocol = protocol
                self.host = host
                self.path = path
                self.name = name
                self.tail = tail
                self.url = f"{self.protocol}://{self.host}/{self.path}/{self.name}.{self.tail}"
            else:
                raise ValueError("URLMERGE: 参数不完整 protocol, host, path, name")
            self.protocol = protocol
            self.host = host
            self.path = path
            self.name = name
            self.tail = tail
        if self.tail:
            self.url = f"{self.protocol}://{self.host}/{self.path}/{self.name}.{self.tail}"
        else:
            self.url = f"{self.protocol}://{self.host}/{self.path}/{self.name}"

    def __str__(self):
        """
        print() 自动调用
        :return:
        """
        return f"URL: {self.url}"

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 实现的路径解析,url解析处理类 的相关文章

随机推荐

  • 【go语言】读取toml文件

    一 简介 TOML 全称为Tom s Obvious Minimal Language 是一种易读的配置文件格式 旨在成为一个极简的数据序列化语言 TOML的设计原则之一是保持简洁性 易读性 同时提供足够的灵活性以满足各种应用场景 TOML
  • 都在做端到端了,传统规控/轨迹预测还能坚持几年?

    最近有些做传统规控和轨迹预测的小伙伴问我 现在LLM做端到端自动驾驶这么火 自己要不要考虑转行 坚持传统规控 轨迹预测还能做几年 会不会三五年后失业了 而且最近小米汽车发布会 也说已经搭载了端到端感知决策大模型 全球首次用于量产车 这个问题
  • 深圳三维扫描分析/偏差检测模具型腔三维尺寸及形位偏差测量公司

    CASAIM中科广电三维扫描模具型腔深圳案例 模具型腔的三维扫描分析 偏差检测是一项重要的质量控制过程 旨在确保模具制造过程中的精确度和一致性 CASAIM中科广电通过使用高精度的三维扫描设备 可以获取模具型腔的实际形状和尺寸数据 并将其与
  • ICLR2024 | ReSimAD:如何在没有真实数据的情况下,提升感知模型的泛化性能

    点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 今天自动驾驶之心为大家分享 ICLR 2024刚刚中稿的ReSimAD ReSimAD可以极大地提升感知模型对于目标域场景的泛化能力 甚至比一些无监督领域适配的方法还要
  • 回望计算机视觉会议ICCV的31年

    作者 原野寻踪 编辑 汽车人 原文链接 https zhuanlan zhihu com p 670393313 点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 全栈算法 技术交流群 本文只做
  • pip问题们

    pip问题们 下载指定版本 已经安装的库列表保存到文本文件中 根据依赖文件批量安装库 离线安装库 whl 文件 pip install git https xxxx安装失败解决方法 下载指定版本 安装特定版本的package 通过使用 gt
  • 上汽飞凡,突然换帅了。。。

    作者 有据无车 编辑 智能车参考 点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心技术交流群 本文只做学术分享 如有侵权 联系删文 飞凡汽车 突然换帅了 最近 上汽集团官方宣布 乘用车总经理 飞
  • FL Studio2024国内中文版多少钱?有哪些新功能呢

    购买您想要的最新的水果软件FL2024版本 然后所有未来所有该版本更新都是免费的 再也不用付钱了 在音乐软件行业 更新费用通常在 960 1600 元之间 而 FL Studio 将始终免费为您提供最新版本 因为我们相信 只要我们开发 FL
  • 视频剪辑软件Camtasia2024最新版本快捷键大全

    Camtasia Studio是一款专门录制屏幕动作的工具 它能在任何颜色模式下轻松地记录 屏幕动作 包括影像 音效 鼠标移动轨迹 解说声音等等 今天来给大家介绍一下Camtasia快捷键的相关内容 Camtasia也是一个十分好用的电脑屏
  • 【EI复现】基于深度强化学习的微能源网能量管理与优化策略研究(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 有 无策略奖励 2 2 训练结果1
  • 题解 | #连续两次作答试卷的最大时间窗#

    程序员到大神成长书单 最无语的公司 写代码让领导不开心了咋办 快手秋招急招 暑期实习也可以投 找实习需要实习经历 操作系统岗 简历能走吗 面了南网数字集团 面试官问的问题有两个挺尖锐的 这种是不是说明不太想要我 俗话说打蛇打七寸 我感觉面试
  • 查找薪水记录超15条的员工号emp_no以及其对应的记录次数

    理想 大模型面经 23届试用期没通过 还能找到工作吗 有没有啥厂招往届生啊 腾讯音乐前端暑期实习一面 已oc 华为od 机试 面试面经 华为OD技术岗面经汇总 软开 算法 测试岗 想看一下大家看法 一个月过去了 25终于找到JAVA实习 华
  • 短信系统搭建主要因素|网页短信平台开发源码

    短信系统搭建主要因素 网页短信平台开发源码 随着移动互联网的快速发展 短信系统已成为企业和个人进行信息传递的重要工具 建立一个高效可靠的短信系统对于企业来说非常重要 下面我们将介绍一些影响短信系统搭建的主要因素 1 平台选择 在搭建短信系统
  • 2024最新MathType7.4.10中文版下载安装激活教程

    MathType 是一款专业的数学公式编辑工具 提供交互式编辑器 让你在编辑数学试卷 书籍 报刊 论文 幻灯演示等文档轻松输入各种复杂的数学公式和符号 1 本次讲解mathtype 7版本的安装步骤 MathType2024 Win 安装包
  • 『力扣刷题本』:逆波兰表达式求值

    大家好久不昂 最近 1 个多月罗根一直在备考期末 文章发的很少 现在已经放寒假啦 学习自然也不能拉下 毕竟 4 月份就要去参加蓝桥杯了 先给自己定个小目标 日更 2 篇 咳咳 下面马上开始讲题 一 题目 给你一个字符串数组 tokens 表
  • GitLab CI 实现项目A更新代码自动触发项目B更新错误码文档

    一 CI CD简介 CI CD 是持续集成 Continuous Integration 和持续交付 持续部署 Continuous Delivery Continuous Deployment 的缩写 是一种软件开发和交付的最佳实践 这两
  • 【go语言】AST抽象语法树详解&实践之扫描代码生成错误码文档

    背景 为了能识别出代码中抛出错误码的地址和具体的错误码值 再根据错误码文件获取到错误码的具体值和注释 方便后续的排错 这里使用AST进行语法分析获取到代码中的目标对象 一 编译过程 在开始解析代码之前先补充了解一下编译过程 编译过程是将高级
  • MongoDB - 整合 SpringBoot 操作全流程

    目录 一 MongoDB 整合 SpringBoot 1 1 引入依赖 1 2 配置文件 1 3 集合操作 1 4 相关注解 1 5 文档操作 1 5 1 查询 1 5 2 更新 1 5 3 删除 一 MongoDB 整合 SpringBo
  • MathType2024下载安装系统要求及新版本功能介绍

    MathType 7应用介绍 MathType可适用于800 软件应用程序和网站 支持在任何文字处理软件 演示程序 页面程序 HTML编辑工具及其它类型的软件 用来建立公式 应用范围 期刊杂志 科研机构 教育教学 工程学 统计学 论文 报告
  • Python 实现的路径解析,url解析处理类

    usr bin python3 coding utf 8 author JHC000abc gmail com file util class py time 2024 1 16 17 06 desc import os class Pat