python之pathlib库使用介绍

        pathlib 是 Python 标准库中用于处理文件路径的模块。它提供了一种面向对象的方式来操作文件和目录路径,简化了路径操作的编码和跨平台的兼容性。下面是 pathlib 库的基本介绍和使用方法:

1.导入 pathlib 模块

from pathlib import Path

2.创建路径对象

可以使用 Path 类创建一个路径对象,以便对文件或目录进行操作。

# 创建路径对象
path = Path('/path/to/file.txt')

3.检查路径的存在性

使用路径对象的 exists() 方法可以检查文件或目录是否存在。

if path.exists():print('路径存在')
else:print('路径不存在')

4. 获取路径的绝对路径

         resolve()用于解析路径中的符号链接并返回绝对路径。它会处理路径中的所有特殊符号,并返回一个标准化的绝对路径。

        解析符号链接:
        resolve() 方法会递归地解析路径中的符号链接(symbolic links)。例如,如果路径中包含一个符号链接指向另一个目录或文件,resolve() 方法会将其解析为实际的目录或文件路径。

        返回绝对路径:
        resolve() 方法总是返回一个绝对路径,无论传入的路径是相对路径还是绝对路径。如果路径是相对路径,则会根据当前工作目录将其解析为绝对路径。

        标准化路径:
        resolve() 方法会对路径进行标准化处理,消除冗余的分隔符、处理上级目录符号(..)和当前目录符号(.),以保证返回的路径是规范化的

absolute_path = path.resolve()
print(absolute_path)

5. 判断路径是否是绝对路径

使用路径对象的 is_absolute() 方法可以判断路径是否是绝对路径。

if path.is_absolute():print('这是一个绝对路径')
else:print('这是一个相对路径')

6. 获取路径的父目录

使用路径对象的 parent 属性可以获取文件或目录的父目录路径。

parent_dir = path.parent
print(parent_dir)

7. 获取路径的文件名和扩展名

使用路径对象的 name 属性可以获取文件或目录的名称,使用 suffix 属性可以获取文件的扩展名。

filename = path.name
print(filename)extension = path.suffix
print(extension)

8. 连接路径

使用路径对象的 / 运算符可以连接路径。

new_path = path / 'subdir' / 'file.txt'
print(new_path)

9. 检查路径是否为文件或目录

使用路径对象的 is_file() 和 is_dir() 方法可以检查路径是否为文件或目录。

if path.is_file():print('这是一个文件')
elif path.is_dir():print('这是一个目录')

10. 遍历目录中的文件和子目录:

使用路径对象的 iterdir() 方法可以遍历目录中的文件和子目录。

for item in path.iterdir():if item.is_file():print('文件:', item)elif item.is_dir():print('目录:', item)

11. 创建目录

使用路径对象的 mkdir() 方法可以创建目录。

path.mkdir()

12. 删除文件或目录

使用路径对象的 unlink() 方法可以删除文件,使用 rmdir() 方法可以删除目录。

path.unlink()  # 删除文件
path.rmdir()   # 删除目录

13. 拼接路径

使用路径对象的 joinpath() 方法可以拼接多个路径。

new_path = path.joinpath('subdir', 'file.txt')
print(new_path)

14. 检查路径是否为空

  14.1 使用 iterdir() 方法遍历目录中的文件和子目录,并检查是否存在任何项:

if path.is_dir() and not any(path.iterdir()):print('目录为空')

        这里使用 iterdir() 方法来获取目录中的所有项,然后使用 any() 函数来检查是否有任何项存在。如果没有任何项,则说明目录为空。

 14.2  使用 glob() 方法进行模式匹配查找,并检查是否找到任何项:

files = list(path.glob('*'))
if not files:print('目录为空')

        这里使用 glob() 方法来进行模式匹配查找,使用 '*' 作为通配符,获取目录中的所有项。然后将结果转换为列表,并检查列表是否为空。如果为空,则说明目录为空。

        请注意,这些方法都假设路径是一个目录。如果路径是一个文件,它们将返回 False,因为文件本身就是一个项。如果要检查文件是否为空,可以使用其他方法,如检查文件大小是否为零。

15. 获取文件或目录的大小

使用路径对象的 stat() 方法可以获取文件或目录的大小和其他元数据信息。

file_size = path.stat().st_size
print('文件大小:', file_size, '字节')

16. 复制文件或目录

使用路径对象的 copy() 方法可以复制文件或目录。

new_path = path.copy('/path/to/destination')

17. 移动文件或目录

使用路径对象的 rename() 方法可以移动文件或目录。

new_path = path.rename('/new/path')

18. 查找文件或目录

使用路径对象的 glob() 方法可以进行文件或目录的模式匹配查找。

files = path.glob('*.txt')  # 查找所有以 .txt 结尾的文件
for file in files:print(file)

19. 快速写入文件内容

使用路径对象的 write_text() 方法可以快速写入文件内容。

path.write_text('Hello, World!')

20. 快速读取文件内容

使用路径对象的 read_text() 方法可以快速读取文件内容。

content = path.read_text()
print(content)

        总结,上述介绍了 pathlib 库的一些用法和功能。它提供了一种更简洁和面向对象的方式来处理文件路径,并且具有良好的跨平台兼容性。另外它提供了丰富的方法和属性,使得文件和目录的操作更加方便和灵活。可以根据具体需求使用这些方法来处理路径、文件和目录。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/761295.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

进程的终止

进程的退出(main函数的退出) main函数的返回值叫做进程的退出码,该退出码表示进程执行的情况。例如:一个函数返回一个值时,我们要知道函数的执行情况,可以去看函数的返回值。 例子: 1 #include…

【VTKExamples::Points】第五期 ExtractPointsDemo

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例ExtractPointsDemo,并解析接口vtkExtractPoints,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U…

进程优先级

文章目录 一、进程优先级二、查看进程优先级以及修改优先级 一、进程优先级 cpu资源少量,只有一个然而在操作系统中存在很多进程,这些进程访问cpu资源时他们相互之间是存在竞争关系。cpu为了保他们之间的公平,也就存在了优先级!那…

NX二次开发——获取当前dll的全路径,上一级路径和名称

在nx二次开发中经常会用到dll的全路径&#xff0c;上一级路径和名称&#xff0c;这里我对其进行封装&#xff0c;方便以后调用。 关键代码&#xff1a; //头文件 #include <Windows.h> #include <atlbase.h>//获取当前dll所在的文件夹(mode:0-全路径名&#xff0…

【DP】第十四届蓝桥杯省赛C++ B组《接龙数列》(C++)

【题目描述】 对于一个长度为 K 的整数数列&#xff1a;A1,A2,...,AK&#xff0c;我们称之为接龙数列当且仅当 的首位数字恰好等于 的末位数字 (2≤i≤K)。 例如 12,23,35,56,61,11 是接龙数列&#xff1b;12,23,34,56 不是接龙数列&#xff0c;因为 56 的首位数字不等于 3…

STM32最小核心板使用HAL库ADC读取MCU温度(使用DMA通道)

STM32自带CPU的温度数据&#xff0c;需要使用ADC去读取。因此在MX创建项目时如图配置&#xff1a; 模块初始化代码如下&#xff1a; void MX_ADC1_Init(void) {/* USER CODE BEGIN ADC1_Init 0 *//* USER CODE END ADC1_Init 0 */ADC_ChannelConfTypeDef sConfig {0};/* USER…

C语言例:设 int x=1,y=3,z; 则执行语句z=x>y?++x:y++; 后,z的值

代码如下&#xff1a; #include<stdio.h> int main(void) {int x1,y3,z; zx>y?x:y; //z(x>y?x:y)//x>y?x:y -->y3 z3printf("z %d\nx %d\ny %d\n",z,x,y); //3 1 4return 0; } 结果如下&#xff1a;

【计算机网络篇】物理层(3)编码与调制

文章目录 &#x1f354;编码与调试⭐基本概念 &#x1f354;基本的带通调制方法和混合调制方法⭐基本的带通调制方法⭐混合调制方法 &#x1f354;编码与调试 物理层是OSI模型中的第一层&#xff0c;它负责在物理媒体上传输原始比特流。在物理层的编码和调试中&#xff0c;我们…

【JS进阶】第二天

JavaScript 进阶 - 第2天 了解面向对象编程的基础概念及构造函数的作用&#xff0c;体会 JavaScript 一切皆对象的语言特征&#xff0c;掌握常见的对象属性和方法的使用。 了解面向对象编程中的一般概念能够基于构造函数创建对象理解 JavaScript 中一切皆对象的语言特征理解引用…

Jmeter多台机器并发请求实现压力性能测试

工作需要开始研究前置服务的压力性能测试&#xff0c;最后选定用jemeter工具&#xff0c;先用本机跑一万个用户&#xff0c;电脑直接蓝屏&#xff0c;通过研究发现当需要模拟数多达上万的并发用户时&#xff0c;使用单台电脑(CPU和内存)可能无法支持&#xff0c;会将程序跑崩溃…

CC-DefineTag:一个简单好用的标签组件,支持自动换行、自适应高度,且可设置行数、标签文字颜色等属性

CC-DefineTag&#xff1a;一个简单好用的标签组件&#xff0c;支持自动换行、自适应高度&#xff0c;且可设置行数、标签文字颜色等属性 摘要&#xff1a; 在前端开发中&#xff0c;标签组件是常见的UI组件之一&#xff0c;用于显示一组相关的标签。然而&#xff0c;传统的标签…

半路出家嵌入式可行吗?

最近看到一个提问&#xff0c;原话如下&#xff1a; 我是一个211电子信息23届硕士毕业生&#xff0c;中间转码了去搞了前端&#xff0c;硕士期间也有过几个大厂实习&#xff0c;然后找工作时手头上有20&#xff0c;30的工作&#xff0c;但最后选择时基于稳定性考虑还是选了家这…

Springboot+vue的医疗挂号管理系统+数据库+报告+免费远程调试

效果介绍: Springbootvue的医疗挂号管理系统&#xff0c;Javaee项目&#xff0c;springboot vue前后端分离项目 本文设计了一个基于Springbootvue的前后端分离的医疗挂号管理系统&#xff0c;采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;con…

【Java Web基础】一些网页设计基础(五)

文章目录 1. 图片在盒子内部垂直居中2. 底部设计&#xff0c;图片或子元素居中于父盒子&#xff08;水平、垂直&#xff09;&#xff0c;随着屏幕大小放大或缩小3. 使用thymeleaf的th:each会导致样式失效错乱问题 1. 图片在盒子内部垂直居中 用弹性盒子实现垂直居中及用css实现…

Advice学习

简介 在Spring框架的AOP&#xff08;面向切面编程&#xff09;中&#xff0c;Advice接口是定义通知行为的抽象。然而&#xff0c;在Spring的实际实现中&#xff0c;Advice接口并没有直接被使用。相反&#xff0c;我们更常见的是MethodInterceptor接口、BeforeAdvice接口、Afte…

利用GANs进行图像生成

生成对抗网络&#xff08;GANs&#xff09;是一种深度学习模型&#xff0c;由两部分组成&#xff1a;生成器&#xff08;Generator&#xff09;和判别器&#xff08;Discriminator&#xff09;。它们通过相互竞争来提高生成器生成高质量图像的能力。以下是如何利用GANs进行图像…

用 Open-Sora 高效创作视频,让创意触手可及

近年来&#xff0c;视频内容以爆炸式增长席卷了我们的生活。从短视频平台到直播带货&#xff0c;视频正成为人们获取信息和娱乐的主要方式。然而&#xff0c;传统视频制作流程往往耗时费力&#xff0c;对于普通用户来说门槛较高。 为了降低视频创作门槛&#xff0c;让更多人享…

无人机自动返航算法实现与优化

一、引言 随着无人机技术的快速发展&#xff0c;其在航拍、农业、救援等领域的应用越来越广泛。在这些应用中&#xff0c;无人机的自动返航功能显得尤为重要。一旦无人机失去控制或与遥控器失去连接&#xff0c;自动返航算法能够确保无人机安全返回起飞点&#xff0c;避免损失和…

【mybatis】MetaObject解读

MyBatis 是一款优秀的持久层框架&#xff0c;它内部封装了 JDBC&#xff0c;使数据库编程变得简单。其中&#xff0c;MetaObject 是 MyBatis 中一个非常重要的元数据对象处理类&#xff0c;它主要用于简化、优化对对象属性的访问。接下来&#xff0c;让我们深入了解 MetaObject…

windows上打开redis服务闪退问题处理

方法1&#xff1a;在windows上面打开redis服务时&#xff0c;弹窗闪退可能是6379端口占用&#xff0c;可以用以下命令查看&#xff1a; netstat -aon | findstr 6379 如果端口被占用可以用这个命令解决&#xff1a; taskkill /f /pid 进程号 方法2&#xff1a; 可以使用…