os文件操作之os.path.dirname和os.path.realpath函数

一、os.path.realpath函数

os.path.realpath()函数是Python标准库中的一个函数,用于返回指定路径的规范化的绝对路径。

它的作用是解析路径中的任何符号链接或相对路径,并返回一个唯一且可操作的绝对路径。具体来说,它会消除路径中的任何符号链接并展开所有的相对路径,以获取真实存在的文件或目录的路径。

例如,假设当前工作目录是/home/user,而指定的路径是./dir/file.txt。这个路径包含相对路径和当前目录.。调用os.path.realpath()函数之后,它将返回/home/user/dir/file.txt,这是规范化的绝对路径。

示例用法:

import os

path = './path/to/file.txt'
real_path = os.path.realpath(path)
print(real_path)  # 输出规范化的绝对路径

需要注意的是,该函数将解析路径中的符号链接并返回目标路径,因此结果可能不是输入路径的原始形式。另外,如果指定的路径不存在,该函数可能会引发FileNotFoundError异常。

二、os.path.dirname

os.path.dirname()函数是Python标准库中的一个函数,用于返回给定路径的目录部分。

具体来说,它会返回指定路径的最后一个目录的路径,即路径的父目录。如果指定的路径是一个文件路径,则返回该文件所在的目录路径;如果指定的路径是一个目录路径,则返回该目录的父目录路径。

示例用法:

import os

path = '/home/user/dir/file.txt'
dir_path = os.path.dirname(path)
print(dir_path)  # 输出目录路径: /home/user/dir

需要注意的是,os.path.dirname()函数并不会检查给定路径是否真实存在,它只是对路径字符串进行操作,因此它不会引发任何异常。如果指定的路径已经是根目录,则函数会返回一个空字符串。如果路径不包含任何斜杠,则会返回当前工作目录。

这个函数在处理文件路径时非常有用,可以方便地获取父目录的路径,进而对文件进行操作、移动或定位到相关的目录。

三、os.path.join函数

os.path.join()函数是Python标准库中的一个函数,用于将多个路径组合成一个完整的路径。

具体来说,它接受多个路径作为参数,并按照当前操作系统的规则将它们连接起来。它会自动根据操作系统的不同来添加正确的路径分隔符,确保生成的路径在不同的操作系统上都是有效的。

示例用法:

import os

path1 = '/home/user'
path2 = 'dir'
filename = 'file.txt'

full_path = os.path.join(path1, path2, filename)
print(full_path)  # 输出完整的路径: /home/user/dir/file.txt

需要注意的是,os.path.join()函数会自动处理路径分隔符,无论是斜杠(/)还是反斜杠(\)。它会根据当前操作系统的规则使用适当的路径分隔符来拼接路径。

该函数非常有用,特别是在编写跨平台的代码时。通过使用os.path.join()函数,你可以以一种简单和可靠的方式构建路径,而无需关心操作系统的差异。

四、结合使用

当使用os.path.realpath(), os.path.dirname()os.path.join()函数结合使用时,可以处理一个文件的路径,获取其规范化的绝对路径以及其所在的目录路径。

示例代码:

import os

# 原始文件路径
file_path = './path/to/file.txt'

# 获取文件的规范化绝对路径
real_path = os.path.realpath(file_path)
print('Real path:', real_path)

# 获取文件所在的目录路径
dir_path = os.path.dirname(real_path)
print('Directory path:', dir_path)

# 构建新的文件路径
new_file_name = 'new_file.txt'
new_file_path = os.path.join(dir_path, new_file_name)
print('New file path:', new_file_path)

输出结果:

Real path: /home/user/path/to/file.txt
Directory path: /home/user/path/to
New file path: /home/user/path/to/new_file.txt

在上面的示例中,首先使用os.path.realpath()函数获取文件的规范化绝对路径,然后使用os.path.dirname()函数获取文件所在的目录路径。最后,使用os.path.join()函数将新的文件名和目录路径拼接起来,构建出一个新的文件路径。

import os

dir_path = os.path.dirname(os.path.realpath('./path/to/file.txt'))

print(dir_path)
print(os.path.join(dir_path, 't5-pegasus'))

输出如下:

D:\Anaconda\envs\pytorch\python.exe F:\match\main.py 
F:\match\path\to
F:\match\path\to\t5-pegasus

Process finished with exit code 0

猜你喜欢

转载自blog.csdn.net/m0_63007797/article/details/131772704