python实现获取路径封装--2023博客之星候选--城市赛道

使用python获取文件路径,一种是获取相对路径,另一种是获取绝对路径。
1.绝对路径:

import os
from typing import Union


def base_dir():
    BASE_DIR: Union[bytes, str] = os.path.dirname(os.path.abspath(__file__))
    return BASE_DIR

以上代码已经很简洁和优化了,但如果你希望进一步封装,可以将其封装为一个可复用的函数。在封装时,你可以考虑以下几点:

  1. 使用类型提示:使用类型提示可以增加代码的可读性和可维护性。
  2. 添加函数注释:添加函数注释可以清楚地说明函数的作用和返回值。
  3. 支持参数传入:如果你希望函数能够接受参数,可以将 base_dir() 修改为接受参数的形式。
  4. 错误处理:考虑在函数中添加适当的错误处理机制。

以下是一个封装后的示例代码:

import os
from typing import Union


def get_base_dir(file_path: str) -> Union[bytes, str]:
    """
    获取给定文件路径的所在目录路径

    Args:
        file_path: 文件路径

    Returns:
        文件所在目录的路径

    Raises:
        FileNotFoundError: 如果文件路径不存在
    """
    if not os.path.exists(file_path):
        raise FileNotFoundError(f"File '{file_path}' does not exist.")

    base_dir = os.path.dirname(os.path.abspath(file_path))
    return base_dir

在这个示例代码中,我们将原来的 base_dir() 函数封装为 get_base_dir() 函数。该函数接受一个文件路径作为参数,并返回该文件所在目录的路径。

我们添加了类型提示和函数注释,以提高代码的可读性和可维护性。并且,我们在函数中添加了错误处理,当给定的文件路径不存在时,会抛出 FileNotFoundError 异常。

这样,你可以在其他地方直接调用 get_base_dir() 函数来获取文件所在目录的路径,并且可以传入不同的文件路径来使用这个函数。
2.相对路径
2.1

import os
from typing import Union


def base_dir():
    BASE_DIR: Union[bytes, str] = os.path.dirname(os.path.abspath(__file__))
    return BASE_DIR

以上代码已经很简洁和优化了,但如果你希望进一步封装,可以将其封装为一个可复用的函数。在封装时,你可以考虑以下几点:

  1. 使用类型提示:使用类型提示可以增加代码的可读性和可维护性。
  2. 添加函数注释:添加函数注释可以清楚地说明函数的作用和返回值。
  3. 支持参数传入:如果你希望函数能够接受参数,可以将 base_dir() 修改为接受参数的形式。
  4. 错误处理:考虑在函数中添加适当的错误处理机制。

以下是一个封装后的示例代码:

import os
from typing import Union


def get_base_dir(file_path: str) -> Union[bytes, str]:
    """
    获取给定文件路径的所在目录路径

    Args:
        file_path: 文件路径

    Returns:
        文件所在目录的路径

    Raises:
        FileNotFoundError: 如果文件路径不存在
    """
    if not os.path.exists(file_path):
        raise FileNotFoundError(f"File '{file_path}' does not exist.")

    base_dir = os.path.dirname(os.path.abspath(file_path))
    return base_dir

在这个示例代码中,我们将原来的 base_dir() 函数封装为 get_base_dir() 函数。该函数接受一个文件路径作为参数,并返回该文件所在目录的路径。

我们添加了类型提示和函数注释,以提高代码的可读性和可维护性。并且,我们在函数中添加了错误处理,当给定的文件路径不存在时,会抛出 FileNotFoundError 异常。

这样,你可以在其他地方直接调用 get_base_dir() 函数来获取文件所在目录的路径,并且可以传入不同的文件路径来使用这个函数。
2.2

import os
from typing import Union


def relative_path():
    relative_path: Union[bytes, str] = os.path.join(os.path.dirname(__file__), 'relative_path')
    return relative_path

在这个示例中,os.path.dirname(__file__) 表示当前脚本文件所在的目录,然后使用 os.path.join() 函数将其与相对路径拼接起来,得到最终的目标路径。
'relative_path' 是一个字符串,用于表示相对路径。在这个代码片段中,'relative_path' 是一个占位符,你可以将它替换为你实际想要指定的相对路径。

def get_relative_path(relative_dir: str) -> str:
    """
    获取相对路径

    :param relative_dir: 相对目录
    :type relative_dir: str
    :return: 相对路径
    :rtype: str
    """
    return os.path.join(os.path.dirname(__file__), relative_dir)

在这个优化后的代码中,我对函数名称进行了修改,使其符合 Python 的命名规范。我还添加了类型提示,以增加代码的可读性和可维护性。另外,我还给 get_relative_path() 函数添加了一个参数 relative_dir,用于指定相对目录。
将以上代码进行合并处理封装:

import os
from typing import Union


def get_absolute_path() -> str:
    """
    获取当前脚本的绝对路径

    :return: 绝对路径
    :rtype: str
    """
    return os.path.abspath(__file__)


def get_relative_path(relative_dir: str) -> str:
    """
    获取相对路径

    :param relative_dir: 相对目录
    :type relative_dir: str
    :return: 相对路径
    :rtype: str
    """
    return os.path.join(os.path.dirname(__file__), relative_dir)

实例化:

# 实例化示例
absolute_path = get_absolute_path()
relative_path = get_relative_path("subdirectory/file.txt")

# 打印结果
print("绝对路径:", absolute_path)
print("相对路径:", relative_path)

在这个示例中,get_absolute_path() 函数返回当前脚本的绝对路径,而 get_relative_path() 函数接受一个相对目录作为参数,并返回相对路径。

你可以根据需要调用这两个函数来获取相应的路径。在示例中,我们实例化了这两个函数并将结果打印出来。

请注意,示例中的 relative_dir 参数应该是相对于当前脚本所在目录的相对路径。你可以根据具体情况修改 relative_dir 的值来获取你想要的相对路径。

import os
from typing import Union


def get_absolute_path() -> str:
    """
    获取当前脚本的绝对路径

    :return: 绝对路径
    :rtype: str
    """
    return os.path.abspath(__file__)


def get_relative_path(relative_dir: str) -> str:
    """
    获取相对路径

    :param relative_dir: 相对目录
    :type relative_dir: str
    :return: 相对路径
    :rtype: str
    """
    return os.path.join(os.path.dirname(__file__), relative_dir)


def get_base_dir() -> str:
    """
    获取项目的根目录

    :return: 根目录的绝对路径
    :rtype: str
    """
    return os.path.dirname(os.path.abspath(__file__))


if __name__ == "__main__":
    # 示例用法
    current_script_path = get_absolute_path()
    relative_path = get_relative_path("subfolder")
    base_directory = get_base_dir()

    print("当前脚本的绝对路径:", current_script_path)
    print("相对路径:", relative_path)
    print("项目的根目录:", base_directory)

这段代码是一个用于获取文件路径的辅助函数的示例。这些函数可以帮助你获取当前脚本的绝对路径、相对路径以及项目的根目录。

函数 get_absolute_path() 返回当前脚本文件的绝对路径,使用 os.path.abspath(__file__) 来获取。

函数 get_relative_path(relative_dir) 接受一个相对目录作为参数,并返回相对于当前脚本文件的相对路径。它使用 os.path.dirname(__file__) 获取当前脚本文件的所在目录,并使用 os.path.join() 将相对目录和当前目录拼接起来。

函数 get_base_dir() 返回项目的根目录的绝对路径。它使用 os.path.abspath(__file__) 获取当前脚本文件的绝对路径,并使用 os.path.dirname() 获取该路径所在的目录。

if __name__ == "__main__": 的代码块中,对这些函数进行了示例用法的展示。分别获取当前脚本的绝对路径、相对路径和项目的根目录,并将结果打印输出。

这些函数可以在你的项目中使用,方便获取文件路径,尤其是在需要引用其他文件或目录时。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SzetoZeZe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值