pathlib 模块简介
pathlib
模块是Python标准库的一部分,从Python 3.4版本开始引入。它提供了一组面向对象的类来表示文件系统路径,将文件路径视为对象进行操作,大大提高了代码的可读性和可维护性。
在使用 pathlib
模块之前,我们需要先导入它。最常用的类是 Path
,它代表一个文件系统路径。
from pathlib import Path # 从pathlib模块导入Path类
Path类的路径属性
name属性:name
属性用于获取文件或目录的名称,包括文件扩展名。
from pathlib import Path
file_path = Path('C:/Users/山海摸鱼人/Documents/test.txt')
file_name = file_path.name
print(f"文件名称: {file_name}")
输出结果
文件名称: test.txt
stem属性:stem
属性返回文件或目录名称,不包含文件扩展名。
from pathlib import Path
file_path = Path('C:/Users/山海摸鱼人/Documents/test.txt')
file_stem = file_path.stem
print(f"文件名称(不包含扩展名): {file_stem}")
输出结果
文件名称(不包含扩展名): test
suffix属性:suffix
属性用于获取文件的扩展名,包括点号(.)。如果是目录,该属性返回空字符串。
from pathlib import Path
file_path = Path('C:/Users/山海摸鱼人/Documents/test.txt')
file_suffix = file_path.suffix
print(f"文件扩展名: {file_suffix}")
dir_path = Path('C:/Users/山海摸鱼人/Documents')
dir_suffix = dir_path.suffix
print(f"目录扩展名: {dir_suffix}")
输出结果
文件扩展名:.txt
目录扩展名:
parent属性:parent
属性返回路径的父目录。如果路径是根目录,parent
属性返回 None
。
from pathlib import Path
file_path = Path('C:/Users/山海摸鱼人/Documents/test.txt')
parent_dir = file_path.parent
print(f"文件的父目录: {parent_dir}")
root_path = Path('/')
root_parent = root_path.parent
print(f"根目录的父目录: {root_parent}")
输出结果
文件的父目录: C:\Users\山海摸鱼人\Documents
根目录的父目录: \
Path类的路径处理方法
absolute()
方法:absolute()
方法用于获取路径的绝对路径。
from pathlib import Path
rel_path = Path('test.txt')
abs_path = rel_path.absolute()
print(f"相对路径 {rel_path} 的绝对路径是: {abs_path}")
输出结果(假设当前工作目录为 C:\Users\山海摸鱼人\workspace)
相对路径 test.txt 的绝对路径是: C:\Users\山海摸鱼人\workspace\test.txt
with_suffix()方法:with_suffix()
方法用于修改文件的扩展名。
from pathlib import Path
file_path = Path('C:/Users/山海摸鱼人/Documents/test.txt')
new_file_path = file_path.with_suffix('.pdf')
print(f"修改扩展名后的路径: {new_file_path}")
输出结果
修改扩展名后的路径: C:/Users/山海摸鱼人/Documents/test.pdf
with_stem()方法:with_stem()
方法用于修改文件或目录的名称(不包含扩展名)。(需python 3.9及以上版本)
from pathlib import Path
file_path = Path('C:/Users/山海摸鱼人/Documents/test.txt')
new_file_path = file_path.with_stem('new_test')
print(f"修改名称(不包含扩展名)后的路径: {new_file_path}")
输出结果
修改名称(不包含扩展名)后的路径: C:/Users/山海摸鱼人/Documents/new_test.txt
with_name()方法:with_name()
方法用于修改文件或目录的完整名称。
from pathlib import Path
file_path = Path('C:/Users/山海摸鱼人/Documents/test.txt')
new_file_path = file_path.with_name('new_file.pdf')
print(f"修改完整名称后的路径: {new_file_path}")
输出结果
修改完整名称后的路径: C:/Users/山海摸鱼人/Documents/new_file.pdf
rename()方法:rename()
方法用于重命名文件或目录。
from pathlib import Path
old_file_path = Path('C:/Users/山海摸鱼人/Documents/test.txt')
new_file_path = Path('C:/Users/山海摸鱼人/Documents/new_test.txt')
old_file_path.rename(new_file_path)
print(f"文件已重命名为: {new_file_path}")
输出结果(假设文件存在且可重命名)
文件已重命名为: C:/Users/山海摸鱼人/Documents/new_test.txt
iterdir()方法:iterdir()
方法用于遍历目录下的所有子项(文件和子目录),返回一个迭代器。(不向下递归)
from pathlib import Path
dir_path = Path('C:/Users/山海摸鱼人/Documents')
for entry in dir_path.iterdir():
if entry.is_file():
print(f"文件: {entry}")
elif entry.is_dir():
print(f"子目录: {entry}")
输出结果(假设目录下有文件和子目录)
文件: C:/Users/山海摸鱼人/Documents/test.txt
子目录: C:/Users/山海摸鱼人/Documents/sub_dir
unlink()方法:unlink()
方法用于删除文件。如果路径指向目录,需要使用 rmdir()
方法删除空目录,或者使用 shutil.rmtree()
方法删除非空目录。
from pathlib import Path
file_path = Path('C:/Users/山海摸鱼人/Documents/test.txt')
if file_path.exists() and file_path.is_file():
file_path.unlink()
print(f"文件 {file_path} 已被删除")
输出结果(假设文件存在)
文件 C:/Users/山海摸鱼人/Documents/test.txt 已被删除
stat()方法:stat()
方法用于获取文件或目录的状态信息,如文件大小、修改时间等。
from pathlib import Path
file_path = Path('C:/Users/山海摸鱼人/Documents/test.txt')
file_stat = file_path.stat()
print(f"文件大小: {file_stat.st_size} 字节")
print(f"最后修改时间: {file_stat.st_mtime}")
输出结果(假设文件存在)
文件大小: 1024 字节(假设)
最后修改时间: 1612345678.90(假设的时间戳)
本文介绍了 pathlib
模块中 Path
类的各种属性和方法,包括 name
、stem
、suffix
、parent
、absolute()
、with_suffix()
、with_stem()
、with_name()
、rename()
、iterdir()
、unlink()
和 stat()
。