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