pathlib—— 面向对象的文件系统路径

它是python3.4新增的一个标准库,提供了不同操作系统下文件系统路径的操作方式,有两大类一个是纯路径不带I/0操作,另一个可以进行I/0的类。pathlib各个类的继承关系如下图:

图来自python官方文档

一般情况,对pathlib不熟悉,用Path就够了,它功能足够强大,个人觉得与相比os.path相比,更加人性化。下文将介绍一些常见操作:

构建Path类路径对象

pathlib中不区分路径分隔符的,在win系统下可以直接用'/'。还可以用 / 创建子路径。感觉比直接字符串拼接和利用os.path.join()更加简洁

from pathlib import Path, PurePath

#直接传进一个完整字符串

p = Path('C:/Users/dongh/Documents/python_learn/pathlib_/file1.txt')

#也可以传进多个字符串

p = Path('C:\\', 'Users', 'dongh', 'Documents', 'python_learn', 'pathlib_', 'file1.txt')

#也可以利用Path.joinpath()

p = Path('C:/Users/dongh/Documents).joinpath('python_learn/pathlib_/file1.txt')

#PosixPath('C:/Users/dongh/Documents/python_learn/pathlib_/file1.txt')

#利用 / 可以创建子路径

p = Path('C:/Users/dongh/Documents)

p = p / 'python_learn/pathlib_/file1.txt'

print(p)

#PosixPath('C:/Users/dongh/Documents/python_learn/pathlib_/file1.txt')

了解对象基本情况

获取上一级路径

p = Path('C:/Users/dongh/Documents/python_learn/pathlib_/file1.txt')

#获取路径上一级目录路径

print(p.parent)#pathlib_\folder1

#获取上上一级目录路径

print(p.parent.parent)

#结果

C:\Users\dongh\Documents\python_learn\pathlib_

C:\Users\dongh\Documents\python_learn

获取路径组件名字(返回的是字符串)

#获取当前路径文件名的后缀名

#获取当前路径文件名不带后缀

#获取-当前路径文件名带后缀

print(p.suffix)

print(p.stem)

print(p.name)#pathlib_\folder1

#获取上一级目录路径名字

print(p.parent.name)

#获取上上一级目录路径名字

print(p.parent.parent.name)

#结果

.txt

file1

file1.txt

pathlib_

python_learn

将路径分成不同组分(返回一个元组)

print(p.parts)

#('C:\\', 'Users', 'dongh', 'Documents', 'python_learn', 'pathlib_', 'file1.txt')

深入了解对象

哈哈,简单了解对象的是不够的~~~万一对象不存在呢

判断对象属性

#判断对象是否存在,存在返回True,反之返回False

p.exists()

#判断对象是否是目录,存在返回True,反之返回False

p.is_dir()

#判断对象是否是文件,存在返回True,反之返回False

p.is_file()

遍历文件夹下的路径

#p指向的是一个文件不是文件夹。它的上一级才是文件

for i in p.parent.iterdir():

print(i,)

"""

C:\Users\dongh\Documents\python_learn\pathlib_\file1

C:\Users\dongh\Documents\python_learn\pathlib_\file2

C:\Users\dongh\Documents\python_learn\pathlib_\folder1

C:\Users\dongh\Documents\python_learn\pathlib_\folder2

C:\Users\dongh\Documents\python_learn\pathlib_\folder3

C:\Users\dongh\Documents\python_learn\pathlib_\test.py

C:\Users\dongh\Documents\python_learn\pathlib_\file1.txt

"""

有目的寻找

#* 表示匹配任意字符串,但这只能在当前目录下寻找

for i in p.parent.glob('*.txt'):

print(i)

'''

C:\Users\dongh\Documents\python_learn\pathlib_\file1.txt

C:\Users\dongh\Documents\python_learn\pathlib_\file2.txt

'''

#寻找当前路径的下一路径的内容

for i in p.parent.glob('*/*.txt'):

print(i)

'''

C:\Users\dongh\Documents\python_learn\pathlib_\folder1\folder_file1.txt

C:\Users\dongh\Documents\python_learn\pathlib_\folder2\folder2.txt

'''

#寻找当前路径下所有符合条件文件

#' ** '意思当前路径和它的所有子路径,相当于循环匹配一遍子路径

#和Path.rglob()效果一样

for i in p.parent.glob('**/*.txt'):#for i in p.parent.rglob('*.txt')

print(i)

'''

C:\Users\dongh\Documents\python_learn\pathlib_\file1.txt

C:\Users\dongh\Documents\python_learn\pathlib_\file2.txt

C:\Users\dongh\Documents\python_learn\pathlib_\folder1\folder_file1.txt

C:\Users\dongh\Documents\python_learn\pathlib_\folder1\sub_folder1\sub_file1.txt

C:\Users\dongh\Documents\python_learn\pathlib_\folder2\folder2.txt

'''

对对象动点手脚

写入数据

#写入二进制数据

p.write_bytes(b'hello world!')

#写入文本

p.write_text('hello world!')

#打开文件可以发现文件内有'hello world!'。

读取数据

#读二进制数据

print(p.read_bytes())

#b'hello world!'

#读文本

p.read_text()

#'hello world!'

Path.open()和内置open()差不多

with p.open('r') as f:

print(f.read())

#hello world!

with p.open('w') as f:

f.write('hello again!')

给对象改个名字

p.rename('new_file.txt')

#原来的'file1.txt'被改成new_file.txt',文件内的内容不变。

创造新的路径

p.mkdir()

#将创建一个名为p.name的新文件夹。

p.rmdir()

#将删除这个文件夹,它必须是空的才能够删除

判断文件是否一样

print(p.samefile('file1.txt'))

#返回True

改变新的路径或后缀名并返回新的路径(原来的路径不被改变)

print(p.with_name('new_file1.txt'))

'C:/Users/dongh/Documents/python_learn/pathlib_/new_file1.txt'

print(p.with_suffix('.csv'))

'C:/Users/dongh/Documents/python_learn/pathlib_/file1.csv'

python lib库_python标准库pathlib常见操作相关推荐

  1. python的标识库和第三方库_Python 标准库、第三方库

    Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具.这些库可用于文件读写.网络抓取和解析.数据连接.数清 ...

  2. python的threading库_python标准库介绍——31 threading 模块详解

    threading 模块 (可选) ``threading`` 模块为线程提供了一个高级接口, 如 [Example 3-1 #eg-3-1] 所示. 它源自 Java 的线程实现. 和低级的 ``t ...

  3. python信号处理库_Python标准库07 信号 (signal包,部分os包)(转载)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在了解了Linux的信号基础之后,Python标准库中的signal包就很容易学习 ...

  4. python argparse库_python标准库之argparse

    argparse的使用 argparse 是 Python 内置的一个用于命令项选项与参数解析的模块,通过在程序中定义好我们需要的参数,argparse 将会从 sys.argv 中解析出这些参数,并 ...

  5. python字符串库函数_Python标准库概览(1):string

    Python的 string 标准库保留了一些有用的函数和用于处理文本对象的类,现在我们来一起看一下Python的string标准库还有哪些我们不知道的有趣用法? 01.capwords()函数:将字 ...

  6. python自带sqlite库_Python标准库之sqlite3使用实例

    Python自带一个轻量级的关系型数据库SQLite.这一数据库使用SQL语言.SQLite作为后端数据库,可以搭配Python建网站,或者制作有数据存储需求的工具.SQLite还在其它领域有广泛的应 ...

  7. python文件管理包_Python标准库04 文件管理 (部分os包,shutil包)

    Python标准库04 文件管理 (部分os包,shutil包) 在操作系统下,用户可以通过操作系统的命令来管理文件,参考.Python 标准库则允许我们从 Python 内部管理文件.相同的目的,我 ...

  8. python语音识别的第三方库_python标准库+内置函数+第三方库: 7.音频处理

    python标准库+内置函数+第三方库 欲善其事,必先利其器 这其器必是python的标准库+内置函数,话说许多第三方库, 也是对标准库的使用,进行封装,使得使用起来更方便. 这些库以使用场景来分类: ...

  9. python groupby用法_Python 标准库实践之合并字典组成的列表

    作者 | 陈祥安 来源 | Python学习开发 最近做了个数据合并的需求这里记录下: 要求如下: dict_of_list1 = [{"name": "zhangsan ...

最新文章

  1. bzoj1013球形空间
  2. Android数据之Json解析
  3. 1104: 求因子和(函数专题)
  4. 为什么程序员的女朋友或老婆颜值普遍都偏高?
  5. AppFabric客户端的一些配置(Microsoft.Web.DistributedCache)
  6. Apache Flink,流计算?不仅仅是流计算! 1
  7. 腾讯技术运营岗实习面试面经
  8. [HTTP协议] 基础知识
  9. String类的实现
  10. 【CV】如何使用Tensorflow提供的Object Detection API--3--手工标注数据
  11. [C#]启动外部程序
  12. H5调用摄像头扫码详解
  13. COIN3D拖拽器使用
  14. 神经网络二分类输出概率,神经网络二分类预测
  15. Vue-cli的安装与基本操作
  16. W3C 发布 EME 标准,EFF 退出 W3C
  17. java权限控制是什么_论Java访问权限控制的重要性
  18. 【NodeJs-5天学习】第四天存储篇① ——安装使用mysql 8.0
  19. flash iphone效果
  20. 传统行业如何“玩”大数据?

热门文章

  1. 什么样的程序员才是牛逼的程序员?
  2. Qt 调用ftd2x API上位机踩坑指南
  3. nms剔除包含的bbox
  4. 信息学奥赛一本通:2026:【例4.12】阶乘和
  5. 瑞能微计量芯片RN2026的实用程序
  6. iphone二手回收报价表(二手iphonex回收参考价)
  7. 网络编程之listen函数
  8. 【转】流体动力学控制方程(详细推导)
  9. 阿里开源自研工业级稀疏模型高性能训练框架 PAI-HybridBackend
  10. 线程池的使用ThreadPoolExecutor