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

本文介绍了四个Python类:PathParser用于解析路径,PathMerge用于合并路径,URLParser解析URL,以及UrlMerge用于合并URL。这些类提供了解析和操作文件路径及网络地址的功能。
摘要由CSDN通过智能技术生成
# !/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}"

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值