pathlib定义: Object-oriented filesystem paths(面向对象的文件系统路径),其语义适用于不同的操作系统,它继承纯路径但也提供I/O化操作,在处理配置路径方面十分简单。

以前在Python中操作文件路径,我们更多的时候是使用os模块;Python3时代后,Python3的系统标准库pathlib模块的 Path 对路径的操作会更简单,甚至可以说pathlib已经可以完全替代os.path。

我们所有的例子中都导入了pathlib2模块而不是pathlib模块,因为简单引用官方的话说就是老版本的pathlib模块已经只作为修复bug模式存在,而新版本的pathlib2是以修补更新的pathlib2而发布的,而且所有的新功能都可以兼容过去的旧版本python。

常用的pathlib操作的例子汇总:

返回当前工作目录路径和Home路径

from pathlib2 import Path# 获取当前目录
current_path = Path.cwd()
print(current_path)# 输出如下:
# /Users/Anders/Documents/# 获取Home目录
home_path = Path.home()
print(home_path)# 输出如下:
# /Users/Anders

父目录操作

from pathlib2 import Path# 获取当前目录
current_path = Path.cwd()# 获取上级父目录
print(current_path.parent)# 获取上上级父目录
print(current_path.parent.parent)# 获取上上上级父目录
print(current_path.parent.parent.parent)# 获取上上上上级父目录
print(current_path.parent.parent.parent.parent)# 获取上上上上级父目录
print(current_path.parent.parent.parent.parent.parent)# 输出如下:
# /Users/Anders/Documents/Jupyter
# /Users/Anders/Documents
# /Users/Anders
# /Users
# /
# 获取当前目录
from pathlib2 import Pathcurrent_path = Path.cwd()for p in current_path.parents:print(p)# 输出如下:
# /Users/Anders/Documents/Jupyter
# /Users/Anders/Documents
# /Users/Anders
# /Users
# /

文件名操作

常用的文件名操作属性如下:

  • name 目录的最后一个部分
  • suffix 目录中最后一个部分的扩展名
  • suffixes 返回多个扩展名列表
  • stem 目录最后一个部分,没有后缀
  • with_name(name) 替换目录最后一个部分并返回一个新的路径
  • with_suffix(suffix) 替换扩展名,返回新的路径,扩展名存在则不变
from pathlib2 import Path# 返回目录中最后一个部分的扩展名
example_path = Path('/Users/Anders/Documents/abc.gif')
print(example_path.suffix)
# 输出如下:
# .gif# 返回目录中多个扩展名列表
example_paths = Path('/Users/Anders/Documents/abc.tar.gz')
print(example_paths.suffixes)
# 输出如下:
# ['.tar', '.gz']# 返回目录中最后一个部分的文件名(但是不包含后缀)
example_path = Path('/Users/Anders/Documents/abc.gif')
print(example_path.stem)
# 输出如下:
# abc# 返回目录中最后一个部分的文件名
example_path = Path('/Users/Anders/Documents/abc.gif')
print(example_path.name)
# 输出如下:
# abc.gif# 替换目录最后一个部分的文件名并返回一个新的路径
new_path1 = example_path.with_name('def.gif')
print(new_path1)
# 输出如下:
# /Users/Anders/Documents/def.gif# 替换目录最后一个部分的文件名并返回一个新的路径
new_path2 = example_path.with_suffix('.txt')
print(new_path2)
# 输出如下:
# /Users/Anders/Documents/abc.txt

路径拼接和分解

from pathlib2 import Path#直接传进一个完整字符串
example_path1 = Path('/Users/Anders/Documents/powershell-2.jpg')#也可以传进多个字符串
example_path2 = Path('/', 'Users', 'dongh', 'Documents', 'python_learn', 'pathlib_', 'file1.txt')#也可以利用Path.joinpath()
example_path3 = Path('/Users/Anders/Documents/').joinpath('python_learn')# #利用 / 可以创建子路径
example_path4 = Path('/Users/Anders/Documents')
example_path5 = example_path4 / 'python_learn/pic-2.jpg'

遍历文件夹

from pathlib2 import Path# 返回目录中最后一个部分的扩展名
example_path = Path('/Users/Anders/Documents')
[path for path in example_path.iterdir()]# 输出如下:
# [PosixPath('/Users/Anders/Documents/abc.jpg'),
#  PosixPath('/Users/Anders/Documents/book-master'),
#  PosixPath('/Users/Anders/Documents/Database'),
#  PosixPath('/Users/Anders/Documents/Git'),
#  PosixPath('/Users/Anders/Documents/AppProjects')]

文件操作

open(mode=‘r’, bufferiong=-1, encoding=None, errors=None, newline=None)

from pathlib2 import Pathexample_path = Path('/Users/Anders/Documents/information/JH.txt')with example_path.open(encoding = 'GB2312') as f:print(f.read())

对于简单的文件读写,在pathlib库中有几个简便的方法:

  • .read_text(): 以文本模式打开路径并并以字符串形式返回内容。
  • .read_bytes(): 以二进制/字节模式打开路径并以字节串的形式返回内容。
  • .write_text(): 打开路径并向其写入字符串数据。
  • .write_bytes(): 以二进制/字节模式打开路径并向其写入数据。
from pathlib2 import Pathexample_path = Path('/Users/Anders/Documents/information/JH.txt')
example_path.read_text(encoding='GB2312')

创建文件夹和删除文件夹

关于这里的创建文件目录mkdir方法接收两个参数:

  • parents:如果父目录不存在,是否创建父目录。
  • exist_ok:只有在目录不存在时创建目录,目录已存在时不会抛出异常。
from pathlib2 import Pathexample_path = Path('/Users/Anders/Documents/test1/test2/test3')# 创建文件目录,在这个例子中因为本身不存在test1,test2,test3,由于parents为True,所以都会被创建出来。
example_path.mkdir(parents = True, exist_ok = True)
# 删除路径对象目录,如果要删除的文件夹内包含文件就会报错
example_path.rmdir()

判断文件及文件夹对象是否存在

  • is_dir() 是否是目录
  • is_file() 是否是普通文件
  • is_symlink() 是否是软链接
  • is_socket() 是否是socket文件
  • is_block_device() 是否是块设备
  • is_char_device() 是否是字符设备
  • is_absolute() 是否是绝对路径
  • resolve() 返回一个新的路径,这个新路径就是当前Path对象的绝对路径,如果是软链接则直接被解析
  • absolute() 也可以获取绝对路径,但是推荐resolve()
  • exists() 该路径是否指向现有的目录或文件:

文件的信息

只需要通过**.stat()**方法就可以返还指定路径的文件信息。

from pathlib2 import Pathexample_path = Path('/Users/Anders/Documents/pic.jpg')
print(example_path.stat())
# 输出如下:
# os.stat_result(st_mode=33188, st_ino=8598206944, st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=38054, st_atime=1549547190, st_mtime=1521009880, st_ctime=1521009883)print(example_path.stat().st_size)
# 输出如下:
# 38054

具体信息可以参见官方文档:https://docs.python.org/3.4/library/pathlib.html
原文链接:https://blog.csdn.net/itanders/article/details/88754606

pathlib库使用手册相关推荐

  1. 对python3中pathlib库的Path类的使用详解

    原文连接   https://www.jb51.net/article/148789.htm 1.调用库 ? 1 from pathlib import 2.创建Path对象 ? 1 2 3 4 5 ...

  2. python3库_对python3中pathlib库的Path类的使用详解

    用了很久的os.path,今天发现竟然还有这么好用的库,记录下来以便使用. 1.调用库 from pathlib import 2.创建Path对象 p = Path('D:/python/1.py' ...

  3. python文件路径操作及pathlib库

    对文件的路径操作是一个非常基础的问题,但也是一个至关重要的问题,优雅的路径操作不仅可以让代码可读性更高:还可以让用户避免很多不必要的麻烦.python中路径操作常用的几种方式重要包括:字符串拼接.os ...

  4. linux c 文件拷贝函数,Linux C函数库参考手册

    来自一本绝版的书,虽然没有函数 描述,但是最起码可以知道分类,就可以去 man 了 Linux C函数库参考手册 第1章字符测试 函数 isalnum(测试字符是否为英文字母或数字) isalpha( ...

  5. Python:pathlib库使用方法

    Python:pathlib库使用方法 pathlib库在python 3.4后已成为标准库,基本上可以代替os.path来处理路径.它采用完全面对对象的编程方式. 总共有6个类用来处理路径,大体可以 ...

  6. 备忘: MIRACL 大数运算库使用手册

    <MIRACL 大数运算库使用手册> 作者: 游贵荣 中文使用手册: http://blog.csdn.net/shuilan0066/article/details/8520337htt ...

  7. C 标准库 - 参考手册

    C 标准库 - 参考手册 目录 C 标准库 - 参考手册 C 标准库 math.h 简介 库宏 库函数 C 标准库 stdlib.h 简介 库变量 库宏 库函数 C 标准库 assert.h 简介 库 ...

  8. uiautomator2 库中文手册

    uiautomator2 库中文手册 一.安装 1.安装uiautomator2: 2.安装设备守护进程: 3.安装weditor 二.使用指南 1. 连接设备 2. 命令行使用 三.API手册 1. ...

  9. C/C++ 开发 boost 库参考手册整理(2) 【学习笔记】

    文档声明: 以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正.并且该文档在后期会随着学习的深入不断补充完善.感谢各位的参考查看. 笔记资料仅供学习交流使用,转载请标明出处 ...

最新文章

  1. BCH大区块导致中心化其实是伪命题
  2. Python的__pycache__文件夹
  3. 互联网相似图像识别检索引擎 —— 基于图像签名的方式
  4. visual studio c/c++变量内存地址里的cc是什么意思?
  5. firefox加载不来
  6. 思科认证网络工程师CCNA(更新完毕)
  7. dataframe中将一列数据切分成多列
  8. pp助手苹果版_再见!PP助手iOS端即将下线 曾是中国最大的苹果助手
  9. C语言及程序设计进阶例程-12 结构体成员的引用
  10. Linux修改终端提示符
  11. 【IT】关于Code打卡机时遇到的问题及解决
  12. 海康VisionMaster定位任务
  13. 多个jdk共存与切换
  14. golden ticket和sliver ticket的区别是什么?
  15. 营销值得学:创业做生意如何降维打击?
  16. Androi开发基础
  17. cadence学习记录
  18. 基础篇 | 15 C++ 科学计算 - OpenBLAS的安装与使用
  19. 24小时在线要饭源码全开源 修复易支付拦截
  20. MMC型APF,MMC型statcom,MMC型储能系统,MMC-HVDC

热门文章

  1. 编写一个C 程序,并使用系统调用fork()创建一个子进程
  2. 日记侠:你的朋友圈能引流,你还不知道?
  3. java编程——案例1:模拟购物车
  4. plumber r_使用Plumber和React缩放R
  5. 崔毅东 C++程序设计入门(下) 第9单元:白公曾咏牡丹芳,一种鲜妍独“异常” 笔记
  6. 将.hhc文件转换成html文件解析
  7. Springboot配置Swagger2
  8. 苹果已冻结招聘 VS 推特员工每周狂干 84 小时,防止被裁员
  9. 2.0 案例2:爬取房源信息以及分析房价
  10. 校园表白墙源码LoveWall