OS模块中获取当前文件的绝对路径的相关方法

2022-08-06

os.path.realpath(__file__)

作用:获取当前执行py脚本的绝对路径(在当前工作目录下的绝对路径)

__file__ : 表示当前文件的本身,一般值是当前文件的相对路径

例如:

main.py 脚本文件的路径是 /home/study_explore/cnn_VMASK/main.py

在main.py 文件中运行以下代码:

dir_path = os.path.realpath(__file__)
print(__file__)
print(dir_path)

>> main.py
>> /home/study_explore/cnn_VMASK/main.py

os.path.dirname(path)

作用: 去掉文件名(或者文件夹),并返回该文件所在的目录

例如:

main.py 脚本文件的路径是 /home/study_explore/cnn_VMASK/main.py,在main.py 中有如下代码:

dir_path = os.path.realpath(__file__)
print(os.path.dirname(dir_path))
print(os.path.dirname(os.path.dirname(dir_path)))

>> /home/study_explore/cnn_VMASK
>> /home/study_explore

TIPS: os.path.realpath(__file__) 和 os.path.dirname(path) 结合起来使用就可以的到在工作目录下的当前文件所在目录的绝对路径。

例如:

main.py 脚本文件的路径是 /home/study_explore/cnn_VMASK/main.py,在main.py 中有如下代码:

dir_path = os.path.dirname(os.path.realpath(__file__))
print(dir_path)

>> /home/study_explore/cnn_VMASK

os.path.abspath()

作用: 返回指定的py脚本的绝对路径

例如:

main.py 脚本文件的路径是 /home/study_explore/cnn_VMASK/main.py,在main.py 中有如下代码:

print(os.path.abspath(__file__))
print(os.path.abspath(".")) #当前文件所在目录的绝对路径
print(os.path.abspath("..")) #当前文件的上级目录的绝对路径

>> /home/study_explore/cnn_VMASK/main.py
>> /home/study_explore/cnn_VMASK
>> /home/study_explore

os.path.basename()

作用: 返回当前所在脚本的文件名称

例如:

print(os.path.basename(__file__))

>> main.py

os.getcwd()

作用: 返回当前进程的工作目录。

工作目录:每一个可运行的程序都会有一个工作目录,而不是直接在根目录下运行的,该程序的相对路径就是指相对于工作目录。

相对应的 os.chdir() --> 设置当前进程的工作目录

例如:

main.py 脚本文件的路径是 /home/study_explore/cnn_VMASK/main.py,在main.py 中有如下代码:

dir_path = os.path.dirname(os.path.realpath(__file__))
os.chdir(dir_path)
print(os.getcwd())

>> /home/study_explore/cnn_VMASK

os.path.join()

作用: 文件路径的拼接

详细请见: python中 OS模块中 os.path.join() 函数用法简介 - jacknie23 - 博客园 (cnblogs.com)

os.path.split()

作用: 分割全路径名中的目录和文件名; 如果给出的是一个目录和文件名(a/b/c.py)或者(a/b/c),则输出路径和文件名(("a/b","c.py")) 或者 (("a/b","c")) ; 如果给出的是一个目录名(a/b/c),则输出路径和为空文件名(("a/b/c",""))

也就是说,它仅仅是以 全路径名 中最后一个 '/' 作为分隔符,分隔后,将索引为0的视为目录(路径),将索引为1的视为文件名