跳转至

1 python os.path.模块介绍

os.path 模块是 Python 标准库 os 中的一部分,用于处理文件和目录路径。它提供了一些用于路径操作的方法,这些方法在跨平台开发中非常有用。以下是 os.path 中常用方法的详细解释及示例代码:

1. os.path.abspath(path)

用途:返回给定路径的绝对路径。

示例

import os

path = "example.txt"

# 获取绝对路径
absolute_path = os.path.abspath(path)
print(f"Absolute path: {absolute_path}")

输出

Absolute path: /home/user/example.txt

说明:如果给定路径是相对路径,它将转换为绝对路径。

2. os.path.basename(path)

用途:返回路径的最后一个组成部分,即文件名或目录名。

示例

import os

path = "/home/user/example.txt"

# 获取文件名或目录名
basename = os.path.basename(path)
print(f"Base name: {basename}")

输出

Base name: example.txt

说明:如果路径是一个目录,如 /home/user/docs/,输出将是 docs

3. os.path.commonpath(paths)

用途:返回给定路径列表的公共路径部分。

示例

import os

paths = ["/home/user/documents/example.txt", "/home/user/photos/image.jpg"]

# 获取公共路径部分
common_path = os.path.commonpath(paths)
print(f"Common path: {common_path}")

输出

Common path: /home/user

说明:返回路径列表中所有路径的最长公共前缀部分。如果路径不共享公共前缀,抛出 ValueError

4. os.path.commonprefix(paths)

用途:返回给定路径列表的公共前缀部分。

示例

import os

paths = ["/home/user/documents/example.txt", "/home/user/docs/image.jpg"]

# 获取公共前缀部分
common_prefix = os.path.commonprefix(paths)
print(f"Common prefix: {common_prefix}")

输出

Common prefix: /home/user/

说明:返回路径列表中所有路径的公共前缀部分,但不会处理路径分隔符的情况。如果路径没有共同前缀,返回空字符串。

5. os.path.dirname(path)

用途:返回路径的目录部分。

示例

import os

path = "/home/user/example.txt"

# 获取路径的目录部分
dirname = os.path.dirname(path)
print(f"Directory name: {dirname}")

输出

Directory name: /home/user

传入文件夹路径

import os

file_path = "/home/user/documents"
directory_path = os.path.dirname(file_path)
print(directory_path)

输出

/home/user

6. os.path.exists(path)

用途:检查给定的路径是否存在。

示例

import os

path = "example.txt"

# 检查路径是否存在
if os.path.exists(path):
    print(f"{path} exists.")
else:
    print(f"{path} does not exist.")

输出

example.txt exists.

说明:返回 TrueFalse

7. os.path.expanduser(path)

用途:扩展路径中的 ~ 符号为用户的主目录路径。

示例

import os

path = "~/documents/example.txt"

# 扩展用户目录
expanded_path = os.path.expanduser(path)
print(f"Expanded path: {expanded_path}")

输出

Expanded path: /home/user/documents/example.txt

说明:在 Unix 系统中,~ 通常表示用户的主目录,如 /home/user,在 Windows 系统中,~ 会转换为用户的 C:\Users\username 目录。

8. os.path.expandvars(path)

用途:替换路径中的环境变量(如 $HOME%USERPROFILE%)为它们的实际值。

示例

import os

path = "$HOME/documents/example.txt"

# 扩展环境变量
expanded_path = os.path.expandvars(path)
print(f"Expanded path: {expanded_path}")

输出

Expanded path: /home/user/documents/example.txt

说明:将路径中的环境变量替换为它们的实际值。此方法对于在代码中动态构建路径时特别有用。

9. os.path.getatime(path)

用途:返回路径指定文件的最后访问时间(Unix 时间戳)。

示例

import os
import datetime

path = "example.txt"

# 获取最后访问时间并转换为可读格式
atime = os.path.getatime(path)
print(f"Last access time: {datetime.datetime.fromtimestamp(atime)}")

输出

Last access time: 2024-12-01 12:34:56

说明:返回文件最后访问的时间戳,通常是 float 类型,代表从 Unix 纪元以来的秒数。可以使用 datetime.datetime.fromtimestamp() 转换为可读的日期时间格式。

10. os.path.getctime(path)

用途:返回路径指定文件的创建时间(Unix 时间戳)。

示例

import os
import datetime

path = "example.txt"

# 获取创建时间并转换为可读格式
ctime = os.path.getctime(path)
print(f"Creation time: {datetime.datetime.fromtimestamp(ctime)}")

输出

Creation time: 2024-11-29 14:12:00

说明:在 Unix 系统上,这个时间通常是文件的“变更”时间,在 Windows 系统上,它是文件的创建时间。

11. os.path.getmtime(path)

用途:返回路径指定文件的最后修改时间(Unix 时间戳)。

示例

import os
import datetime

path = "example.txt"

# 获取最后修改时间并转换为可读格式
mtime = os.path.getmtime(path)
print(f"Last modification time: {datetime.datetime.fromtimestamp(mtime)}")

输出

Last modification time: 2024-11-30 15:45:20

说明:返回文件最后修改的时间戳,通常是 float 类型,表示从 Unix 纪元以来的秒数。

12. os.path.getsize(path)

用途:返回路径指定文件的大小,以字节为单位。

示例

import os

path = "example.txt"

# 获取文件大小
size = os.path.getsize(path)
print(f"File size: {size} bytes")

输出

File size: 1234 bytes

13. os.path.islink(path)

用途:检查给定路径是否是一个符号链接。

示例

import os

path = "example_symlink"

# 检查路径是否是符号链接
if os.path.islink(path):
    print(f"{path} is a symbolic link.")
else:
    print(f"{path} is not a symbolic link.")

输出

example_symlink is a symbolic link.

说明:返回 True 如果路径是符号链接,否则返回 False

继续添加关于 os.path 模块的方法说明:

14. os.path.isfile(path)

用途:检查给定路径是否是一个普通文件。

示例

import os

path = "example.txt"

# 检查路径是否是一个普通文件
if os.path.isfile(path):
    print(f"{path} is a file.")
else:
    print(f"{path} is not a file.")

输出

example.txt is a file.

说明:返回 True 如果路径指向一个普通文件,否则返回 False

15. os.path.isdir(path)

用途:检查给定路径是否是一个目录。

示例

import os

path = "/home/user/docs"

# 检查路径是否是一个目录
if os.path.isdir(path):
    print(f"{path} is a directory.")
else:
    print(f"{path} is not a directory.")

输出

/home/user/docs is a directory.

说明:返回 True 如果路径指向一个目录,否则返回 False

16. os.path.join(*paths)

用途:将多个路径组合成一个完整路径。此方法会自动处理不同平台的路径分隔符。

示例

import os

dir_path = "/home/user"
file_name = "example.txt"

# 合并路径
full_path = os.path.join(dir_path, file_name)
print(f"Full path: {full_path}")

输出

Full path: /home/user/example.txt

说明:适合在跨平台程序中使用,自动根据操作系统插入正确的路径分隔符。

17. os.path.normpath(path)

用途:规范化路径,消除多余的路径分隔符和 ... 等。

示例

import os

path = "/home/user//docs/../example.txt"

# 规范化路径
normalized_path = os.path.normpath(path)
print(f"Normalized path: {normalized_path}")

输出

Normalized path: /home/user/example.txt

说明:会将路径中的多余部分(如重复的分隔符或 ..)合并并简化。

18. os.path.realpath(path)

用途:返回路径的规范化绝对路径,并解析符号链接。

示例

import os

path = "example_symlink"

# 获取实际路径
real_path = os.path.realpath(path)
print(f"Real path: {real_path}")

输出

Real path: /home/user/actual_file.txt

说明:此方法会解析路径中所有符号链接,返回最终的绝对路径。

19. os.path.split(path)

用途:将路径分解为目录部分和文件名部分。

示例

import os

path = "/home/user/example.txt"

# 分解路径
dirname, basename = os.path.split(path)
print(f"Directory name: {dirname}")
print(f"Base name: {basename}")

输出

Directory name: /home/user
Base name: example.txt

说明:返回一个元组,其中包含路径的目录部分和文件名部分。

20. os.path.splitext(path)

用途:分解路径为文件名和扩展名。

示例

import os

path = "/home/user/example.txt"

# 分解路径
filename, extension = os.path.splitext(path)
print(f"Filename: {filename}")
print(f"Extension: {extension}")

输出

Filename: /home/user/example
Extension: .txt

说明:返回一个元组,其中包含路径的文件名部分和扩展名部分。

这些方法是 os.path 模块中一些最常用的工具,帮助开发者在 Python 中高效地进行文件和路径操作。