当前位置: 首页 > 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…...

STM32单片机学习(28) —— STM32的SPI外设

文章目录概述SPI通信的移位机制&#xff08;以bit为单位&#xff09;SPI外设框图第一部分&#xff1a;数据通路SPI通信的数据帧格式SPI外设移位机制&#xff08;以字节为单位&#xff09;第二部分&#xff1a;主机时钟生成器SPI通信时钟频率与传输速率第三部分&#xff1a;主从…...

小米MIMO最新邀请码

欢迎使用&#xff0c;各得10元体验金...

ARM PMU性能监控单元原理与实践指南

1. ARM PMU性能监控单元概述性能监控单元&#xff08;PMU&#xff09;是现代ARM处理器中用于硬件级性能分析的核心组件。它通过一组可编程的硬件计数器&#xff0c;实现对处理器内部各种关键事件的精确测量。这些事件涵盖了从指令执行、缓存访问到内存子系统行为等处理器活动的…...

PentestGPT实战部署指南:AI驱动的渗透测试工作流落地

1. 这不是另一个“AI安全”的概念玩具&#xff0c;而是一套能真正跑起来的渗透测试辅助工作流“PentestGPT”这个名字刚在GitHub上出现时&#xff0c;我第一反应是点开又关掉——过去三年里&#xff0c;我见过太多打着“AI渗透”旗号的项目&#xff1a;有的只是把ChatGPT API封…...

使用TaotokenCLI工具一键配置开发环境中的API密钥

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用Taotoken CLI工具一键配置开发环境中的API密钥 在团队协作或个人开发中&#xff0c;为每个项目或成员手动配置大模型API密钥和…...

Burp Suite证书安装全解:HTTPS抓包失败的根源与跨平台命令行方案

1. 为什么必须亲手安装Burp Suite证书——不是“点一下就完事”的操作很多人第一次在手机或测试设备上配置Burp Suite代理时&#xff0c;会下意识认为&#xff1a;只要把电脑上的Burp监听地址填进Wi-Fi代理设置&#xff0c;再用浏览器访问http://burp&#xff0c;点击那个绿色的…...

2026论文顶级降AI率工具大曝光:一键把AIGC率降至安全线!

步入2026年&#xff0c;学术圈的规则已经彻底变了味。过去那种只盯着查重率的“降重焦虑”早就被更可怕的“降AI焦虑”取代了。AI检测算法越来越聪明&#xff0c;高校审核标准也越来越严苛&#xff0c;光是把重复率压下去已经完全不够用了。现在摆在学生和科研人员面前的难题是…...

Java项目中如何提升整体系统性能?

性能优化可以说是我们程序员的必修课&#xff0c;如果你想要跳出CRUD的苦海&#xff0c;成为一个更“高级”的程序员的话&#xff0c;性能优化这一关你是无论无何都要去面对的。为了提升系统性能&#xff0c;开发人员可以从系统的各个角度和层次对系统进行优化。除了最常见的代…...

UE4SS终极指南:从零开始掌握虚幻引擎脚本系统

UE4SS终极指南&#xff1a;从零开始掌握虚幻引擎脚本系统 【免费下载链接】RE-UE4SS Injectable LUA scripting system, SDK generator, live property editor and other dumping utilities for UE4/5 games 项目地址: https://gitcode.com/gh_mirrors/re/RE-UE4SS UE4S…...

CTF出题人视角:从NewStarCTF 2023的WEB题,聊聊PHP特性与Flask Debug的那些‘坑’

CTF出题艺术&#xff1a;从PHP特性到Flask Debug的攻防博弈 当一道精心设计的CTF题目被成功破解时&#xff0c;出题人与解题者之间往往存在一场无声的思维交锋。作为NewStarCTF 2023 WEB方向的出题人&#xff0c;我想通过复盘"Begin of PHP"和"ErrorFlask"…...