Python pathlib库深度解析与实战应用
pathlib
是 Python 3.4 引入的一个用于处理文件路径的库,它提供了面向对象的路径操作方式,比传统的 os.path
更加直观和易用。
1. 导入 Path
类
from pathlib import Path
2. 创建路径对象
# 当前目录 p = Path('.') print(p) # 输出: . # 绝对路径 p = Path('/home/user/documents') print(p) # 输出: /home/user/documents # 相对路径 p = Path('documents/file.txt') print(p) # 输出: documents/file.txt
3. 路径拼接
p = Path('/home/user') / 'documents' / 'file.txt' print(p) # 输出: /home/user/documents/file.txt
4. 获取路径的各个部分
p = Path('/home/user/documents/file.txt') # 获取文件名 print(p.name) # 输出: file.txt # 获取文件名(不带扩展名) print(p.stem) # 输出: file # 获取扩展名 print(p.suffix) # 输出: .txt # 获取父目录 print(p.parent) # 输出: /home/user/documents # 获取所有父目录 for parent in p.parents: print(parent)
5. 检查路径是否存在
p = Path('/home/user/documents/file.txt') print(p.exists()) # 输出: True 或 False
6. 检查路径是文件还是目录
p = Path('/home/user/documents/file.txt') print(p.is_file()) # 输出: True 或 False print(p.is_dir()) # 输出: True 或 False
7. 创建目录
p = Path('/home/user/new_directory') p.mkdir(exist_ok=True) # exist_ok=True 表示如果目录已存在则不报错
8. 删除文件或目录
# 删除文件 p = Path('/home/user/documents/file.txt') p.unlink() # 删除目录 p = Path('/home/user/documents') p.rmdir() # 只能删除空目录
9. 遍历目录
p = Path('/home/user/documents') for child in p.iterdir(): print(child)
10. 查找文件
# 查找所有 .txt 文件 p = Path('/home/user/documents') for txt_file in p.glob('*.txt'): print(txt_file) # 递归查找所有 .txt 文件 for txt_file in p.rglob('*.txt'): print(txt_file)
11. 读取和写入文件
# 读取文件内容 p = Path('/home/user/documents/file.txt') content = p.read_text() print(content) # 写入文件内容 p.write_text('Hello, World!')
12. 获取绝对路径
p = Path('documents/file.txt') print(p.absolute()) # 输出: /home/user/documents/file.txt
13. 解析路径
p = Path('/home/user/documents/file.txt') print(p.parts) # 输出: ('/', 'home', 'user', 'documents', 'file.txt')
14. 获取路径的统计信息
p = Path('/home/user/documents/file.txt') stat = p.stat() print(stat.st_size) # 文件大小 print(stat.st_mtime) # 最后修改时间
15. 重命名文件或目录
p = Path('/home/user/documents/file.txt') new_p = p.rename('/home/user/documents/new_file.txt')
16. 获取当前工作目录
p = Path.cwd() print(p) # 输出: /home/user
17. 获取用户主目录
p = Path.home() print(p) # 输出: /home/user
18. 获取路径的字符串表示
p = Path('/home/user/documents/file.txt') print(str(p)) # 输出: /home/user/documents/file.txt
19. 比较路径
p1 = Path('/home/user/documents/file.txt') p2 = Path('/home/user/documents/file.txt') print(p1 == p2) # 输出: True
20. 获取路径的 URL 表示
p = Path('/home/user/documents/file.txt') print(p.as_uri()) # 输出: file:///home/user/documents/file.txt
21. 获取路径的规范化形式
p = Path('/home/user/../documents/file.txt') print(p.resolve()) # 输出: /home/documents/file.txt
22. 获取路径的符号链接目标
p = Path('/home/user/documents/link') print(p.resolve()) # 输出符号链接指向的实际路径
23. 创建符号链接
p = Path('/home/user/documents/file.txt') p.symlink_to('/home/user/documents/link')
24. 获取路径的硬链接目标
p = Path('/home/user/documents/link') print(p.readlink()) # 输出硬链接指向的实际路径
25. 获取路径的硬链接
p = Path('/home/user/documents/file.txt') p.link_to('/home/user/documents/link')
26. 获取路径的硬链接数
p = Path('/home/user/documents/file.txt') print(p.stat().st_nlink) # 输出硬链接数
27. 获取路径的 inode 号
p = Path('/home/user/documents/file.txt') print(p.stat().st_ino) # 输出 inode 号
28. 获取路径的设备号
p = Path('/home/user/documents/file.txt') print(p.stat().st_dev) # 输出设备号
29. 获取路径的权限
p = Path('/home/user/documents/file.txt') print(p.stat().st_mode) # 输出权限
30. 获取路径的所有者和组
p = Path('/home/user/documents/file.txt') print(p.stat().st_uid) # 输出所有者 print(p.stat().st_gid) # 输出组
31. 获取路径的创建时间
p = Path('/home/user/documents/file.txt') print(p.stat().st_ctime) # 输出创建时间
32. 获取路径的最后访问时间
p = Path('/home/user/documents/file.txt') print(p.stat().st_atime) # 输出最后访问时间
33. 获取路径的最后修改时间
p = Path('/home/user/documents/file.txt') print(p.stat().st_mtime) # 输出最后修改时间
34. 获取路径的文件系统信息
p = Path('/home/user/documents/file.txt') print(p.stat().st_blocks) # 输出文件系统信息
35. 获取路径的文件系统块大小
p = Path('/home/user/documents/file.txt') print(p.stat().st_blksize) # 输出文件系统块大小
36. 获取路径的文件系统块数
p = Path('/home/user/documents/file.txt') print(p.stat().st_blocks) # 输出文件系统块数
37. 获取路径的文件系统 inode 号
p = Path('/home/user/documents/file.txt') print(p.stat().st_ino) # 输出文件系统 inode 号
38. 获取路径的文件系统设备号
p = Path('/home/user/documents/file.txt') print(p.stat().st_dev) # 输出文件系统设备号
39. 获取路径的文件系统权限
p = Path('/home/user/documents/file.txt') print(p.stat().st_mode) # 输出文件系统权限
40. 获取路径的文件系统所有者和组
p = Path('/home/user/documents/file.txt') print(p.stat().st_uid) # 输出文件系统所有者 print(p.stat().st_gid) # 输出文件系统组
41. 获取路径的文件系统创建时间
p = Path('/home/user/documents/file.txt') print(p.stat().st_ctime) # 输出文件系统创建时间
42. 获取路径的文件系统最后访问时间
p = Path('/home/user/documents/file.txt') print(p.stat().st_atime) # 输出文件系统最后访问时间
43. 获取路径的文件系统最后修改时间
p = Path('/home/user/documents/file.txt') print(p.stat().st_mtime) # 输出文件系统最后修改时间
44. 获取路径的文件系统信息
p = Path('/home/user/documents/file.txt') print(p.stat().st_blocks) # 输出文件系统信息
45. 获取路径的文件系统块大小
p = Path('/home/user/documents/file.txt') print(p.stat().st_blksize) # 输出文件系统块大小
46. 获取路径的文件系统块数
p = Path('/home/user/documents/file.txt') print(p.stat().st_blocks) # 输出文件系统块数
47. 获取路径的文件系统 inode 号
p = Path('/home/user/documents/file.txt') print(p.stat().st_ino) # 输出文件系统 inode 号
48. 获取路径的文件系统设备号
p = Path('/home/user/documents/file.txt') print(p.stat().st_dev) # 输出文件系统设备号
49. 获取路径的文件系统权限
p = Path('/home/user/documents/file.txt') print(p.stat().st_mode) # 输出文件系统权限
50. 获取路径的文件系统所有者和组
p = Path('/home/user/documents/file.txt') print(p.stat().st_uid) # 输出文件系统所有者 print(p.stat().st_gid) # 输出文件系统组
51. 获取路径的文件系统创建时间
p = Path('/home/user/documents/file.txt') print(p.stat().st_ctime) # 输出文件系统创建时间
52. 获取路径的文件系统最后访问时间
p = Path('/home/user/documents/file.txt') print(p.stat().st_atime) # 输出文件系统最后访问时间
53. 获取路径的文件系统最后修改时间
p = Path('/home/user/documents/file.txt') print(p.stat().st_mtime) # 输出文件系统最后修改时间
54. 获取路径的文件系统信息
p = Path('/home/user/documents/file.txt') print(p.stat().st_blocks) # 输出文件系统信息
55. 获取路径的文件系统块大小
p = Path('/home/user/documents/file.txt') print(p.stat().st_blksize) # 输出文件系统块大小
56. 获取路径的文件系统块数
p = Path('/home/user/documents/file.txt') print(p.stat().st_blocks) # 输出文件系统块数
57. 获取路径的文件系统 inode 号
p = Path('/home/user/documents/file.txt') print(p.stat().st_ino) # 输出文件系统 inode 号
58. 获取路径的文件系统设备号
p = Path('/home/user/documents/file.txt') print(p.stat().st_dev) # 输出文件系统设备号
59. 获取路径的文件系统权限
p = Path('/home/user/documents/file.txt') print(p.stat().st_mode) # 输出文件系统权限
60. 获取路径的文件系统所有者和组
p = Path('/home/user/documents/file.txt') print(p.stat().st_uid) # 输出文件系统所有者 print(p.stat().st_gid) # 输出文件系统组
61. 获取路径的文件系统创建时间
p = Path('/home/user/documents/file.txt') print(p.stat().st_ctime) # 输出文件系统创建时间
62. 获取路径的文件系统最后访问时间
p = Path('/home/user/documents/file.txt') print(p.stat().st_atime) # 输出文件系统最后访问时间
63. 获取路径的文件系统最后修改时间
p = Path('/home/user/documents/file.txt') print(p.stat().st_mtime) # 输出文件系统最后修改时间
64. 获取路径的文件系统信息
p = Path('/home/user/documents/file.txt') print(p.stat().st_blocks) # 输出文件系统信息
65. 获取路径的文件系统块大小
p = Path('/home/user/documents/file.txt') print(p.stat().st_blksize) # 输出文件系统块大小
66. 获取路径的文件系统块数
p = Path('/home/user/documents/file.txt') print(p.stat().st_blocks) # 输出文件系统块数
67. 获取路径的文件系统 inode 号
p = Path('/home/user/documents/file.txt') print(p.stat().st_ino) # 输出文件系统 inode 号
68. 获取路径的文件系统设备号
p = Path('/home/user/documents/file.txt') print(p.stat().st_dev) # 输出文件系统设备号
69. 获取路径的文件系统权限
p = Path('/home/user/documents/file.txt') print(p.stat().st_mode) # 输出文件系统权限
70. 获取路径的文件系统所有者和组
p = Path('/home/user/documents/file.txt') print(p.stat().st_uid) # 输出文件系统所有者 print(p.stat().st_gid) # 输出文件系统组
71. 获取路径的文件系统创建时间
p = Path('/home/user/documents/file.txt') print(p.stat().st_ctime) # 输出文件系统创建时间
72. 获取路径的文件系统最后访问时间
p = Path('/home/user/documents/file.txt') print(p.stat().st_atime) # 输出文件系统最后访问时间
73. 获取路径的文件系统最后修改时间
p = Path('/home/user/documents/file.txt') print(p.stat().st_mtime) # 输出文件系统最后修改时间
74. 获取路径的文件系统信息
p = Path('/home/user/documents/file.txt') print(p.stat().st_blocks) # 输出文件系统信息
75. 获取路径的文件系统块大小
p = Path('/home/user/documents/file.txt') print(p.stat().st_blksize) # 输出文件系统块大小
76. 获取路径的文件系统块数
p = Path('/home/user/documents/file.txt') print(p.stat().st_blocks) # 输出文件系统块数
77. 获取路径的文件系统 inode 号
p = Path('/home/user/documents/file.txt') print(p.stat().st_ino) # 输出文件系统 inode 号
78. 获取路径的文件系统设备号
p = Path('/home/user/documents/file.txt') print(p.stat().st_dev) # 输出文件系统设备号
79. 获取路径的文件系统权限
p = Path('/home/user/documents/file.txt') print(p.stat().st_mode) # 输出文件系统权限
80. 获取路径的文件系统所有者和组
p = Path('/home/user/documents/file.txt') print(p.stat().st_uid) # 输出文件系统所有者 print(p.stat().st_gid) # 输出文件系统组
81. 获取路径的文件系统创建时间
p = Path('/home/user/documents/file.txt') print(p.stat().st_ctime) # 输出文件系统创建时间
82. 获取路径的文件系统最后访问时间
p = Path('/home/user/documents/file.txt') print(p.stat().st_atime) # 输出文件系统最后访问时间
83. 获取路径的文件系统最后修改时间
p = Path('/home/user/documents/file.txt') print(p.stat().st_mtime) # 输出文件系统最后修改时间
84. 获取路径的文件系统信息
p = Path('/home/user/documents/file.txt') print(p.stat().st_blocks) # 输出文件系统信息
85. 获取路径的文件系统块大小
p = Path('/home/user/documents/file.txt') print(p.stat().st_blksize) # 输出文件系统块大小
86. 获取路径的文件系统块数
p = Path('/home/user/documents/file.txt') print(p.stat().st_blocks) # 输出文件系统块数
87. 获取路径的文件系统 inode 号
p = Path('/home/user/documents/file.txt') print(p.stat().st_ino) # 输出文件系统 inode 号
作者:觅远