当前位置: 首页 > news >正文

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

相关文章:

python之pathlib库使用介绍

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

Java:设计模式

文章目录 参考简介工厂模式简单工厂模式工厂方法模式抽象工厂模式总结 单例模式预加载懒加载线程安全问题 策略模式 参考 知乎 简介 总体来说设计模式分为三类共23种。 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模…...

【链表】Leetcode 19. 删除链表的倒数第 N 个结点【中等】

删除链表的倒数第 N 个结点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5] 解题思路 1、使用快慢指针找到要删除节点的前一个节点。2、删…...

亚马逊认证考试系列 - 知识点 - 安全组简介

AWS安全组是一种虚拟防火墙,用于控制实例进出网络流量。安全组是一个实例级别的防火墙,可以定义哪些流量可以进入或离开特定的EC2实例。 功能:安全组可以用于限制特定类型的流量,如HTTP或SSH,允许特定IP地址范围的流量…...

同向双指针合集(力扣)

283. 移动零 代码 class Solution { public:void moveZeroes(vector<int>& nums) {int n nums.size();int l 0, r 0;while(r < n){if(nums[r]){swap(nums[l],nums[r]);l;}r;}} };209. 长度最小的子数组 代码 class Solution { public:int minSubArrayLen(i…...

G - Find a way

题目分析 1.双重bfs,遍历两个起点求最短路再计算总和即可 2.唯一的坑点在于对于一个KFC&#xff0c;两人中可能有一个到不了&#xff0c;所以还要对到不了的点距离做处理 #include <bits/stdc.h> using namespace std; using ll long long; const int N 220;struct pos…...

AJAX 02 案例、Bootstrap框架

AJAX 学习 AJAX 2 综合案例黑马 API01 图书管理Bootstrap 官网Bootstrap 弹框图书管理-渲染列表图书管理-添加图书图书管理-删除图书图书管理 - 编辑图书 02 图片上传03 更换图片04 个人信息设置信息渲染头像修改补充知识点&#xff1a;label扩大表单的范围 AJAX 2 综合案例 黑…...

SinoDB客户端工具dbaccess

类似Oracle的客户端工具sqlplus&#xff0c;Mysql的客户端工具mysql&#xff0c;SinoDB数据库也有自带的命令行客户端工具dbaccess。 dbaccess 识别用户输入&#xff0c;将用户输入的 SQL 语句打包发送给 SinoDB 数据库服务器执行&#xff0c;然后接收服务器的执行结果&#xf…...

postman学习

一、如何学习postman工具 1、下载和安装 Postman&#xff1a; 首先&#xff0c;从 Postman 官方网站&#xff08;https://www.postman.com&#xff09;下载并安装 Postman 应用程序。 2、了解基本概念&#xff1a; 在开始学习之前&#xff0c;了解一些基本概念&#xff0c;…...

【Linux】初识进程

目录 操作系统是什么 设计操作系统的目的 操作系统的定位 如何理解管理 管理的本质 管理的例子 计算机的管理概念图 操作系统管理逻辑的六字真言 系统调用和库函数的概念 进程 进程的概念 什么是PCB&#xff1f; PCB的主要内容 如何查看进程&#xff1f; 通过系统…...

有关Theano和PyTensor库

根据Github里面的介绍&#xff0c;PyTensor是源于Theano&#xff0c; Theano目前应该已经不再开发了&#xff0c;更新都是很多年前。 因此PyTensor在背景介绍中说 PyTensor is a fork of Aesara, which is a fork of Theano. Theano和PyTensor都是计算相关的库&#xff0c;可以…...

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

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

Git版本管理工具

前言&#xff1a; 本文记录学习使用 Git 版本管理工具的学习笔记&#xff0c;通过阅读参考链接中的博文和实际操作&#xff0c;快速的上手使用 Git 工具。 本文参考了引用链接博文里的内容。 引用: Git使用教程-配置管理 git reset详解-CSDN博客 3、Git使用不完全指南&am…...

微信小程序选择器picker的使用(省市区)

index.wxml picker中的 moderegion模式&#xff0c;这里同element中的select不同的是&#xff0c;不需要自己在绑定数据原&#xff0c;默认就包含了省市区的整体数据 <view class"section"><view class"section__title">省市区选择器</vie…...

std::shared_ptr与std::make_unique在类函数中的使用

在最近学习cartographer算法的时候&#xff0c;发现源码中大量的使用了std::shared_ptr与std::make_unique&#xff0c;对于这些东西之前不是很了解&#xff0c;为了更好的理解源代码&#xff0c;因此简单学习了一下这块内容的使用&#xff0c;在这里简单记个笔记。 std::shar…...

flutter 局部view更新,dialog更新进度,dialog更新

局部更新有好几种方法&#xff0c;本次使用的是 StatefulBuilder 定义 customState去更新对话框内容 import package:flutter/cupertino.dart; import package:flutter/material.dart;class ProgressDialog {final BuildContext context;BuildContext? dialogContext;double _…...

Lombok:@Delegate优化代码利器

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 一、Delegate介绍 二、示例 三、使用场景 四、使用注意事项 总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、Delegate介绍 Dele…...

【C语言】对称密码——栅栏的加密和解密

栅栏密码的原理&#xff1a; 栅栏层数n ①把将要传递的信息中的字母交替排成上下n行。 ②再将下面每一行字母排依次在上面一行的后边&#xff0c;从而形成一段密码。 ③例如&#xff1a;栅栏层数为2 明文&#xff1a;THE LONGEST DAY MUST HAVE AN END 加密&#xff1a; …...

一、rv1126开发之视频输入和视频编码

RV1126 H264/HEVC编码流程 一、RV1126编码的流程图&#xff1a; 二、每个代码模块详细讲解 2.1. VI模块的创建 VI模块的初始化&#xff1a;关键在于VI_CHN_ATTR_S结构体&#xff0c;这个结构体是VI设置的结构体。这个结构体的成员变量包括&#xff1a;pcVideoNode&#xff0…...

4.1 用源文件写汇编代码

汇编语言 1. 源程序 1.1 伪指令 汇编指令是有对应的机器码的指令&#xff0c;可以被编译为机器指令&#xff0c;最终为CPU所执行伪指令没有对应的机器指令&#xff0c;最终不被CPU所执行伪指令是由编译器来执行的指令&#xff0c;编译器根据伪指令来进行相关的编译工作 1.2…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求&#xff0c;本次涉及的主要是收费汇聚交换机的配置&#xff0c;浪潮网络设备在高速项目很少&#xff0c;通…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...