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 的值来获取你想要的相对路径。

你可能感兴趣的:(python)