13-Python-pathlib库使用


前言

  • 本篇来学习下Python中路径操作模块pathlib

简介

  1. pathlib 相比常用的 os.path 而言,pathlib 对于目录路径的操作更简洁也更贴近 Pythonic(Python代码风格的)
  2. pathlib 提供表示文件系统路径的类,其语义适用于不同的操作系统

使用

1. 获取当前文件夹路径
from pathlib import Path

# 1.可以直接调用类方法.cwd()
print(Path.cwd())
# 2.也可以实例化后调用
p = Path('./')
print(p.cwd())
2. 获取当前文件路径
# test.py 

from pathlib import Path
# 当前文件路径
p = Path(__file__)
print(p)

print(p.absolute())  # 获取绝对路径
print(p.resolve())  # 获取绝对路径
print(p.name)  # 获取文件名称 'test.py'
print(p.stem)  # 只要文件名,不要后缀 test
print(p.suffix)  # 获取文件 后缀.py
print(p.suffixes)  # 文件所有的后缀 ['.py']
print(p.parts)  # 拆分路径
print(p.parent)  # 父目录
print(p.parent.parent)  # 父目录的父目录
print(p.parents)  # 所有的父级 <WindowsPath.parents>
print(p.anchor)  # 目录前面的部分
3. 获取文件绝对路径
# test.py
from pathlib import Path

p = Path('test.py')
print(p)  # test.py 对象
print(p.absolute())  # 绝对路径
4. 获取用户home目录
from pathlib import Path

print(Path.home())
5. 判断文件
from pathlib import Path

print(Path.cwd().is_file())  # False
p = Path('./test.py')
print(p.is_file())  # 文件不存在,也会返回False

# exists() 判断是否存在
p = Path('./data.json')
print(p.exists())  # True or False
6. 判断文件夹

print(Path.cwd().is_dir())  # True

p = Path('./test.py')
print(p.is_dir())  # False
7. 拼接路径
from pathlib import Path

# 当前文件路径
p = Path('./')
print(p.absolute())  # 当前绝对路径
print(p.joinpath(p.absolute(), 'test.py'))  # 路径拼接data.json
8. 遍历文件目录
from pathlib import Path

p = Path(__file__).parent
# iterdir()遍历文件目录
for i in p.iterdir():
    print([i for i in p.iterdir() if i.is_dir()])  # 文件夹
    print([i for i in p.iterdir() if i.is_file()])  # 文件
9. 正则匹配
  • glob:只会遍历查找当前目录
from pathlib import Path

p = Path(__file__).parent
# glob 只会遍历查找当前目录
print(p.glob('*.txt'))
print([i for i in p.glob('*.txt')])
print([i for i in p.glob('*.py')])
  • rglob :会递归所有子目录
from pathlib import Path

p = Path(__file__).parent
# rglob 会递归所有子目录
print(p.rglob('*.txt'))  #
print([i for i in p.rglob('*.txt')])
print([i for i in p.rglob('*.py')])
  • match() 检查路径是否符合规则
from pathlib import Path

p = Path('6666.txt')
# math 检查匹配规则
print('math', p.match('*.txt'))  # 只检查规则,符合规则即使文件不存在也会返回True
10. 文件操作
  • 创建文件
from pathlib import Path

p = Path('./test.json')
p.touch()  # 创建test.json
  • 删除文件
from pathlib import Path

p = Path('test.json')
p.unlink()  # 删除test.json  文件不存在会报错
  • 文件读取
from pathlib import Path

p = Path('.gitignore')
print(p.read_text())  # 读取文本
print(p.read_bytes()) # 读取 bytes
  • 文件写入
from pathlib import Path

p = Path('data.txt')
p.write_text('test') # 写入文本

p = Path('data1.txt')
p.write_bytes(b'666')  # 写入 tytes
  • 创建目录
from pathlib import Path

p = Path('test1')  # 已经存在的目录会报错
p.mkdir()

p = Path('test2/test3')
p.mkdir(parents=True)  # 递归创建
  • 删除目录
from pathlib import Path

#  rmdir()一次只删除一级目录,且当前目录必须为空
p = Path('test1')
p.rmdir()   # 删除目录
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习de测试小白

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值