pathlib 是 Python 标准库中用于处理文件路径的模块。它提供了一种面向对象的方式来操作文件和目录路径,简化了路径操作的编码和跨平台的兼容性。下面是 pathlib 库的基本介绍和使用方法:
1.导入 pathlib 模块
from pathlib import Path
2.创建路径对象
可以使用 Path 类创建一个路径对象,以便对文件或目录进行操作。
# 创建路径对象
path = Path('/path/to/file.txt')
3.检查路径的存在性
使用路径对象的 exists() 方法可以检查文件或目录是否存在。
if path.exists():
print('路径存在')
else:
print('路径不存在')
4. 获取路径的绝对路径
resolve()用于解析路径中的符号链接并返回绝对路径。它会处理路径中的所有特殊符号,并返回一个标准化的绝对路径。
解析符号链接:
resolve() 方法会递归地解析路径中的符号链接(symbolic links)。例如,如果路径中包含一个符号链接指向另一个目录或文件,resolve() 方法会将其解析为实际的目录或文件路径。
返回绝对路径:
resolve() 方法总是返回一个绝对路径,无论传入的路径是相对路径还是绝对路径。如果路径是相对路径,则会根据当前工作目录将其解析为绝对路径。
标准化路径:
resolve() 方法会对路径进行标准化处理,消除冗余的分隔符、处理上级目录符号(..)和当前目录符号(.),以保证返回的路径是规范化的
absolute_path = path.resolve()
print(absolute_path)
5. 判断路径是否是绝对路径
使用路径对象的 is_absolute() 方法可以判断路径是否是绝对路径。
if path.is_absolute():
print('这是一个绝对路径')
else:
print('这是一个相对路径')
6. 获取路径的父目录
使用路径对象的 parent 属性可以获取文件或目录的父目录路径。
parent_dir = path.parent
print(parent_dir)
7. 获取路径的文件名和扩展名
使用路径对象的 name 属性可以获取文件或目录的名称,使用 suffix 属性可以获取文件的扩展名。
filename = path.name
print(filename)
extension = path.suffix
print(extension)
8. 连接路径
使用路径对象的 / 运算符可以连接路径。
new_path = path / 'subdir' / 'file.txt'
print(new_path)
9. 检查路径是否为文件或目录
使用路径对象的 is_file() 和 is_dir() 方法可以检查路径是否为文件或目录。
if path.is_file():
print('这是一个文件')
elif path.is_dir():
print('这是一个目录')
10. 遍历目录中的文件和子目录:
使用路径对象的 iterdir() 方法可以遍历目录中的文件和子目录。
for item in path.iterdir():
if item.is_file():
print('文件:', item)
elif item.is_dir():
print('目录:', item)
11. 创建目录
使用路径对象的 mkdir() 方法可以创建目录。
path.mkdir()
12. 删除文件或目录
使用路径对象的 unlink() 方法可以删除文件,使用 rmdir() 方法可以删除目录。
path.unlink() # 删除文件
path.rmdir() # 删除目录
13. 拼接路径
使用路径对象的 joinpath() 方法可以拼接多个路径。
new_path = path.joinpath('subdir', 'file.txt')
print(new_path)
14. 检查路径是否为空
14.1 使用 iterdir() 方法遍历目录中的文件和子目录,并检查是否存在任何项:
if path.is_dir() and not any(path.iterdir()):
print('目录为空')
这里使用 iterdir() 方法来获取目录中的所有项,然后使用 any() 函数来检查是否有任何项存在。如果没有任何项,则说明目录为空。
14.2 使用 glob() 方法进行模式匹配查找,并检查是否找到任何项:
files = list(path.glob('*'))
if not files:
print('目录为空')
这里使用 glob() 方法来进行模式匹配查找,使用 '*' 作为通配符,获取目录中的所有项。然后将结果转换为列表,并检查列表是否为空。如果为空,则说明目录为空。
请注意,这些方法都假设路径是一个目录。如果路径是一个文件,它们将返回 False,因为文件本身就是一个项。如果要检查文件是否为空,可以使用其他方法,如检查文件大小是否为零。
15. 获取文件或目录的大小
使用路径对象的 stat() 方法可以获取文件或目录的大小和其他元数据信息。
file_size = path.stat().st_size
print('文件大小:', file_size, '字节')
16. 复制文件或目录
使用路径对象的 copy() 方法可以复制文件或目录。
new_path = path.copy('/path/to/destination')
17. 移动文件或目录
使用路径对象的 rename() 方法可以移动文件或目录。
new_path = path.rename('/new/path')
18. 查找文件或目录
使用路径对象的 glob() 方法可以进行文件或目录的模式匹配查找。
files = path.glob('*.txt') # 查找所有以 .txt 结尾的文件
for file in files:
print(file)
19. 快速写入文件内容
使用路径对象的 write_text() 方法可以快速写入文件内容。
path.write_text('Hello, World!')
20. 快速读取文件内容
使用路径对象的 read_text() 方法可以快速读取文件内容。
content = path.read_text()
print(content)
总结,上述介绍了 pathlib 库的一些用法和功能。它提供了一种更简洁和面向对象的方式来处理文件路径,并且具有良好的跨平台兼容性。另外它提供了丰富的方法和属性,使得文件和目录的操作更加方便和灵活。可以根据具体需求使用这些方法来处理路径、文件和目录。