使用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
以上代码已经很简洁和优化了,但如果你希望进一步封装,可以将其封装为一个可复用的函数。在封装时,你可以考虑以下几点:
- 使用类型提示:使用类型提示可以增加代码的可读性和可维护性。
- 添加函数注释:添加函数注释可以清楚地说明函数的作用和返回值。
- 支持参数传入:如果你希望函数能够接受参数,可以将
base_dir()
修改为接受参数的形式。 - 错误处理:考虑在函数中添加适当的错误处理机制。
以下是一个封装后的示例代码:
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
以上代码已经很简洁和优化了,但如果你希望进一步封装,可以将其封装为一个可复用的函数。在封装时,你可以考虑以下几点:
- 使用类型提示:使用类型提示可以增加代码的可读性和可维护性。
- 添加函数注释:添加函数注释可以清楚地说明函数的作用和返回值。
- 支持参数传入:如果你希望函数能够接受参数,可以将
base_dir()
修改为接受参数的形式。 - 错误处理:考虑在函数中添加适当的错误处理机制。
以下是一个封装后的示例代码:
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__":
的代码块中,对这些函数进行了示例用法的展示。分别获取当前脚本的绝对路径、相对路径和项目的根目录,并将结果打印输出。
这些函数可以在你的项目中使用,方便获取文件路径,尤其是在需要引用其他文件或目录时。