基础使用——Path
from pathlib import Path
p = Path(".")
# .代表当前路径(相对路径)
print([x for x in p.iterdir() if x.is_file()])
# 输出当前目录下所有文件
print([x for x in p.glob("**/*.py")])
# 输出当前目录下所有.py文件
q = Path(r"C:\Program Files\1.py")
print(q.drive)
# 输出路径的驱动器名称
print(q.root)
# 输出路径的根目录
print(q.anchor)
# 输出路径的驱动和根
q1 = Path(r"\Program Files")
print(q1.anchor)
# 如果只有驱动和根只有一个,则只输出一个
print(q.parent)
# 输出路径的父目录,即上级目录,如果上级目录是根目录,则返回空字符串
q2 = Path(r"\Program Files/a/b")
print(q2.parent)
# 输出:Program Files/a
print(q.name)
print(q2.name)
# 输出最后一级的文件名
print(q.suffix)
# 输出最后一个路径组件中以点分割的后一部分,即文件扩展名,如果没有文件扩展名,则输出空字符串
q3 = Path(r"Program Files/l.tar.gar")
print(q3.suffixes)
# 输出文件拓展名组成的列表
print(q.stem)
# 输出最后一个路径组件中以点分割的前一部分,即文件名,如果没有文件名,则输出空字符串
print(q.as_posix())
# 输出以正斜杠表示的路径
print(q.is_absolute())
# 判断路径是否是绝对路径
print(q.is_relative_to(q1))
# 判断q是否为q1的子路径
print(q1.joinpath("a", "1.txt"))
# 将q1和目标路径合并成一个路径
print(q.match("*/1.py"))
# 判断路径是否匹配给定的模式
q4 = q.with_name("2.py")
print(q)
print(q4)
# 对最后一级文件名进行修改,并返回新路径(前提是路径中必须有文件名)
q5 = q.with_suffix(".txt")
print(q)
print(q5)
# 对文件扩展名进行修改,并返回新路径(如果原本路径没有后缀,则会进行追加,也可以通过空字符串来移除之前的后缀)
q6 = q.with_stem("2")
print(q)
print(q6)
# 对文件名进行修改,并返回新路径,源路径没有文件名则会引发ValueError
- 路径的基本组成部分如下:
文件路径的增删改查
from pathlib import Path
import datetime
p = Path(r'D:\Code\test.py')
p.touch(mode=0o666, exist_ok=True)
# 创建指定文件,如果文件已存在,则当参数exist_ok为真值时函数将成功执行
p.mkdir()
# 使用给定的路径新建目录,同样可以使用参数exist_ok
p.symlink_to(r"D:\Code\1.py")
# 将文件路径指向某个文件或文件夹,文件将是symlink类型的文件,没有大小,只是对目标文件的一个引用
p.rename(r"D:\Code\Py神之路\test.py")
# 将文件重命名, 文件不能已存在
p.replace(r"D:\Code\Py神之路\test.py")
# 和rename不同的是,如果文件已经存在,replace方法会进行替换
p.unlink()
# 移除文件的指向链接
p.rmdir()
# 移除文件目录, 目录必须为空
p.chmod(0o666)
# 改变文件权限, 0o666代表
print(p.exists())
# 判断文件是否存在
print(p.is_file())
# 判断是否是文件
print(p.is_dir())
# 判断是否是文件夹
print(p.iterdir())
# 包含所有子文件的生成器
print(p.glob("**/*.py"))
# 包含所有匹配文件的生成器
file_stat = p.stat()
# 打印文件的详细信息
print(f"文件大小: {file_stat.st_size} 字节")
print(f"文件权限: {oct(file_stat.st_mode)}")
print(f"最后访问时间: {datetime.datetime.fromtimestamp(file_stat.st_atime)}")
print(f"最后修改时间: {datetime.datetime.fromtimestamp(file_stat.st_mtime)}")
print(f"创建时间: {datetime.datetime.fromtimestamp(file_stat.st_ctime)}")
上述就是pathlib模块的常用方法,大家可能会注意到,我们并没有写到复制(copy)和删除(delete),原因是pathlib中没有这两个方法(虽然copy在官方文档中有,但是并不能用)
对于这些pathlib中没有的操作,我们需要借助OS或者shutil模块来帮助我们完成