13-Python-pathlib库使用

Posted 爱学习de测试小白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了13-Python-pathlib库使用相关的知识,希望对你有一定的参考价值。

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()   # 删除目录

以上是关于13-Python-pathlib库使用的主要内容,如果未能解决你的问题,请参考以下文章

Django:您是不是需要使用特定文件夹名称命名标签库(模板、静态等)?

用Python查找某文件夹的文件名称,并对文件名进行更改的库名称是啥?

如何在不使用库的情况下将默认名称“选择文件”更改为“选择文档”? [复制]

Eclipse EGit 在 Pulls 后更改文件夹名称

如何从使用库或相机拍摄的 UIImagePickerControllerPHAsset 获取图像名称?

mysql-库操作