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 号

作者:觅远

物联沃分享整理
物联沃-IOTWORD物联网 » Python pathlib库深度解析与实战应用

发表回复