Python:pathlib库使用方法

Python:pathlib库使用方法

pathlib库在python 3.4后已成为标准库,基本上可以代替os.path来处理路径。它采用完全面对对象的编程方式。

总共有6个类用来处理路径,大体可以分为两类:

  • pure paths: 单纯的路径计算操作而没有IO功能;
  • concrete paths: 路经计算操作和IO功能。

这6个类的继承关系如下:

Python:pathlib库使用方法_第1张图片

可以看到PurePath是所有类的基类,我们重点要掌握PurePathPath这两个类,在Windows平台下路径对象会有Windows前缀,Unix平台上路径对象会有Posix前缀。

基本使用

列出所有子目录

import pathlib
p = pathlib.Path('.')
[x for x in p.iterdir() if x.is_dir()]
# 结果
[WindowsPath('.git'), WindowsPath('.idea'), WindowsPath('.vscode'),
WindowsPath('1_函数参数'), WindowsPath('2_生成器'), WindowsPath('3_常用函数'),
WindowsPath('4_装饰器), WindowsPath('5_常用模块')]
# 在linux环境下,上述的WindowsPath都会变为PosixPath

列出指定类型的文件

list(p.glob('**/*.py'))

路径拼接

可以使用/符号来拼接路径

p = pathlib.Path(r'F:\cookies\python')
q = p / 'learnPython'
print(q)
# 结果
F:\cookies\python\learnPython

查询属性

q.exists()
# 结果
True
q.is_dir()
# 结果
True

打开文件

q = q / "hello_world.py"
with q.open() as f:
print(f.readline())
# 结果
#!/usr/bin/env python

Path计算

PurePosixPath('foo') == PurePosixPath('FOO')
# 结果
False
PureWindowsPath('foo') == PureWindowsPath('FOO')
# 结果
True
PureWindowsPath('FOO') in { PureWindowsPath('foo') }
# 结果
True
PureWindowsPath('C:') < PureWindowsPath('d:')
# 结果
True
PureWindowsPath('foo') == PurePosixPath('foo')
# 结果
False
PureWindowsPath('foo') < PurePosixPath('foo')
# 结果
Traceback (most recent call last):
File "", line 1, in 
TypeError: unorderable types: PureWindowsPath() < PurePosixPath()

str() 和 bytes()

p = PurePath('/etc')
str(p)
# 结果
'/etc'
p = PureWindowsPath('c:/Program Files')
str(p)
# 结果
'c:\\Program Files'
bytes(p)
# 结果
b'/etc'

常用方法

from pathlib import Path

file = "D:/99-Research/Python/Image"

p = Path(file)

p.cwd() # 获取当前路径
 
p.stat()  # 获取当前文件的信息
 
p.exists()  # 判断当前路径是否是文件或者文件夹
 
p.glob(filename)  # 获取路径下的所有符合filename的文件,返回一个generator
 
p.rglob(filename)  # 与上面类似,只不过是返回路径中所有子文件夹的符合filename的文件
 
p.is_dir()  # 判断该路径是否是文件夹
 
p.is_file()  # 判断该路径是否是文件
 
p.iterdir()  #当path为文件夹时,通过yield产生path文件夹下的所有文件、文件夹路径的迭代器
 
P.mkdir(parents=Fasle)  # 根据路径创建文件夹,parents=True时,会依次创建路径中间缺少的文件夹
p_news = p/'new_dirs/new_dir'
p_news.mkdir(parents=True)
  
P.open(mode=’r’, buffering=-1, encoding=None, errors=None, newline=None)  #类似于open()函数
  
p.rename(target)  # 当target是string时,重命名文件或文件夹;当target是Path时,重命名并移动文件或文件夹
  
p.replace(target)  # 重命名当前文件或文件夹,如果target所指示的文件或文件夹已存在,则覆盖原文件
  
p.parent(),p.parents()  # parent获取path的上级路径,parents获取path的所有上级路径
  
p.is_absolute()  # 判断path是否是绝对路径
  
p.match(pattern)  # 判断path是否满足pattern
  
p.rmdir()  # 当path为空文件夹的时候,删除该文件夹
  
p.name  # 获取path文件名
  
p.suffix  # 获取path文件后缀

 

你可能感兴趣的:(Python,python,pathlib)