pathlib --- 面向对象的文件系统路径pathlib --- 面向对象的文件系统路径
https://docs.python.org/zh-cn/3/library/pathlib.html
https://yetingyun.blog.csdn.net/article/details/107991203?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control
一、返回当前工作目录路径和Home路径
current_path = Path.cwd() # 获取当前目录
home_path = Path.home() # Home目录
二、父目录操作
- current_path.parent # 获取上级父目录
- 遍历整个父目录:
for p in current_path.parents:
print(p)
三、文件名操作
1. 常用的文件名操作属性如下:
name 目录的最后一个部分
suffix 目录中最后一个部分的扩展名
suffixes 返回多个扩展名列表
stem 目录最后一个部分,没有后缀
with_name(name) 替换目录最后一个部分并返回一个新的路径
with_suffix(suffix) 替换扩展名,返回新的路径,扩展名存在则不变
2. 路径拼接和分解
#直接传进一个完整字符串
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'
3. 遍历文件夹:路径对象后面直接使用**iterdir()**方法,该方法返回一个生成器,我们可以循环遍历出所有指定目录下的目录路径。
example_path = Path(r'C:\Users\Administrator\Desktop\就业班课件')
for path in example_path.iterdir():
print(path)
4. 文件操作
example_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(): 以二进制/字节模式打开路径并向其写入数据。
比如可以把之前的例子改写如下:
example_path = Path('/Users/Anders/Documents/information/JH.txt')
example_path.read_text(encoding='GB2312')
5. 创建文件夹和删除文件夹
创建文件目录mkdir方法接收两个参数:
parents:如果父目录不存在,是否创建父目录。
exist_ok:只有在目录不存在时创建目录,目录已存在时不会抛出异常。
example_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() 该路径是否指向现有的目录或文件:
- 文件的信息
example_path = Path(r'C:\Users\Administrator\Desktop\就业班课件\函数名作参数的两种情景.docx')
print(example_path.stat())
# 输出如下:
os.stat_result ( st_mode=33206, st_ino=7036874417841264, st_dev=549660743, st_nlink=1, st_uid=0, st_gid=0, st_size=12546, st_atime=1617721362, st_mtime=1617721362, st_ctime=1617720956 )
print(example_path.stat().st_size) # 文件大小
原文地址:https://www.cnblogs.com/qqq789001/p/15113210.html
- 前端知识学了却不会用,都是没走心
- var a="xx";a=a+"ss";a的值变了,但"xx"字符串并没有变
- 先行者计划--1109微课总结 | 《通过二个demo初识webPack》
- 先行者计划--1107微课 《什么是Vuex?》| 文字简版
- 脱离前端菜鸟层次的二个关键点
- 【课堂笔记】先行者 3.0版本的vueJs课程的第三次课
- ASP.NET:创建Linked ValidationSummary, 深入理解ASP.NET的Validation
- 【课堂笔记】先行者 3.0版本的vueJs课程的第二次课
- 用Python做证券指数的三种策略分析
- 明确告诉你,眼界不够,JS再好也成不了好前端
- 手把手教你整合最优雅的SSM框架
- WCF后续之旅(9):通过WCF的双向通信实现Session管理[上篇]
- 周末小贴士之“什么是语法糖”?有啥意义?
- Java反射机制深入详解
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- ctfshow红包题-web
- 微信支付一面(C++后台)
- 强网杯-随便注
- LeetCode 1547. Minimum Cost to Cut a Stick(动态规划)
- 管道符漏洞
- 06-STM32+ESP8266+AIR202远程升级方案-移植STM32+ESP8266实现利用http或https远程更新STM32程序到自己的项目(定时访问升级,备份升级)
- 反射
- 记一次sys 数据库的修复
- 使用Django管理数据库表
- php学习day3
- mysqlbinlog命令详解
- XtraBackup工具详解 Part 9 innobackupex命令总结
- ctfhub-信息泄露-Git泄露
- php学习day2
- mysqlbinlog命令详解MySQL 5.7 常用命令