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,两人中可能有一个到不了,所以还要对到不了的点距离做处理 #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 个人信息设置信息渲染头像修改补充知识点:label扩大表单的范围 AJAX 2 综合案例 黑…...
SinoDB客户端工具dbaccess
类似Oracle的客户端工具sqlplus,Mysql的客户端工具mysql,SinoDB数据库也有自带的命令行客户端工具dbaccess。 dbaccess 识别用户输入,将用户输入的 SQL 语句打包发送给 SinoDB 数据库服务器执行,然后接收服务器的执行结果…...
postman学习
一、如何学习postman工具 1、下载和安装 Postman: 首先,从 Postman 官方网站(https://www.postman.com)下载并安装 Postman 应用程序。 2、了解基本概念: 在开始学习之前,了解一些基本概念,…...
【Linux】初识进程
目录 操作系统是什么 设计操作系统的目的 操作系统的定位 如何理解管理 管理的本质 管理的例子 计算机的管理概念图 操作系统管理逻辑的六字真言 系统调用和库函数的概念 进程 进程的概念 什么是PCB? PCB的主要内容 如何查看进程? 通过系统…...
有关Theano和PyTensor库
根据Github里面的介绍,PyTensor是源于Theano, Theano目前应该已经不再开发了,更新都是很多年前。 因此PyTensor在背景介绍中说 PyTensor is a fork of Aesara, which is a fork of Theano. Theano和PyTensor都是计算相关的库,可以…...
用 Open-Sora 高效创作视频,让创意触手可及
近年来,视频内容以爆炸式增长席卷了我们的生活。从短视频平台到直播带货,视频正成为人们获取信息和娱乐的主要方式。然而,传统视频制作流程往往耗时费力,对于普通用户来说门槛较高。 为了降低视频创作门槛,让更多人享…...
Git版本管理工具
前言: 本文记录学习使用 Git 版本管理工具的学习笔记,通过阅读参考链接中的博文和实际操作,快速的上手使用 Git 工具。 本文参考了引用链接博文里的内容。 引用: Git使用教程-配置管理 git reset详解-CSDN博客 3、Git使用不完全指南&am…...
微信小程序选择器picker的使用(省市区)
index.wxml picker中的 moderegion模式,这里同element中的select不同的是,不需要自己在绑定数据原,默认就包含了省市区的整体数据 <view class"section"><view class"section__title">省市区选择器</vie…...
std::shared_ptr与std::make_unique在类函数中的使用
在最近学习cartographer算法的时候,发现源码中大量的使用了std::shared_ptr与std::make_unique,对于这些东西之前不是很了解,为了更好的理解源代码,因此简单学习了一下这块内容的使用,在这里简单记个笔记。 std::shar…...
flutter 局部view更新,dialog更新进度,dialog更新
局部更新有好几种方法,本次使用的是 StatefulBuilder 定义 customState去更新对话框内容 import package:flutter/cupertino.dart; import package:flutter/material.dart;class ProgressDialog {final BuildContext context;BuildContext? dialogContext;double _…...
Lombok:@Delegate优化代码利器
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、Delegate介绍 二、示例 三、使用场景 四、使用注意事项 总结 提示:以下是本篇文章正文内容,下面案例可供参考 一、Delegate介绍 Dele…...
【C语言】对称密码——栅栏的加密和解密
栅栏密码的原理: 栅栏层数n ①把将要传递的信息中的字母交替排成上下n行。 ②再将下面每一行字母排依次在上面一行的后边,从而形成一段密码。 ③例如:栅栏层数为2 明文:THE LONGEST DAY MUST HAVE AN END 加密: …...
一、rv1126开发之视频输入和视频编码
RV1126 H264/HEVC编码流程 一、RV1126编码的流程图: 二、每个代码模块详细讲解 2.1. VI模块的创建 VI模块的初始化:关键在于VI_CHN_ATTR_S结构体,这个结构体是VI设置的结构体。这个结构体的成员变量包括:pcVideoNode࿰…...
4.1 用源文件写汇编代码
汇编语言 1. 源程序 1.1 伪指令 汇编指令是有对应的机器码的指令,可以被编译为机器指令,最终为CPU所执行伪指令没有对应的机器指令,最终不被CPU所执行伪指令是由编译器来执行的指令,编译器根据伪指令来进行相关的编译工作 1.2…...
STM32单片机学习(28) —— STM32的SPI外设
文章目录概述SPI通信的移位机制(以bit为单位)SPI外设框图第一部分:数据通路SPI通信的数据帧格式SPI外设移位机制(以字节为单位)第二部分:主机时钟生成器SPI通信时钟频率与传输速率第三部分:主从…...
小米MIMO最新邀请码
欢迎使用,各得10元体验金...
ARM PMU性能监控单元原理与实践指南
1. ARM PMU性能监控单元概述性能监控单元(PMU)是现代ARM处理器中用于硬件级性能分析的核心组件。它通过一组可编程的硬件计数器,实现对处理器内部各种关键事件的精确测量。这些事件涵盖了从指令执行、缓存访问到内存子系统行为等处理器活动的…...
PentestGPT实战部署指南:AI驱动的渗透测试工作流落地
1. 这不是另一个“AI安全”的概念玩具,而是一套能真正跑起来的渗透测试辅助工作流“PentestGPT”这个名字刚在GitHub上出现时,我第一反应是点开又关掉——过去三年里,我见过太多打着“AI渗透”旗号的项目:有的只是把ChatGPT API封…...
使用TaotokenCLI工具一键配置开发环境中的API密钥
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用Taotoken CLI工具一键配置开发环境中的API密钥 在团队协作或个人开发中,为每个项目或成员手动配置大模型API密钥和…...
Burp Suite证书安装全解:HTTPS抓包失败的根源与跨平台命令行方案
1. 为什么必须亲手安装Burp Suite证书——不是“点一下就完事”的操作很多人第一次在手机或测试设备上配置Burp Suite代理时,会下意识认为:只要把电脑上的Burp监听地址填进Wi-Fi代理设置,再用浏览器访问http://burp,点击那个绿色的…...
2026论文顶级降AI率工具大曝光:一键把AIGC率降至安全线!
步入2026年,学术圈的规则已经彻底变了味。过去那种只盯着查重率的“降重焦虑”早就被更可怕的“降AI焦虑”取代了。AI检测算法越来越聪明,高校审核标准也越来越严苛,光是把重复率压下去已经完全不够用了。现在摆在学生和科研人员面前的难题是…...
Java项目中如何提升整体系统性能?
性能优化可以说是我们程序员的必修课,如果你想要跳出CRUD的苦海,成为一个更“高级”的程序员的话,性能优化这一关你是无论无何都要去面对的。为了提升系统性能,开发人员可以从系统的各个角度和层次对系统进行优化。除了最常见的代…...
UE4SS终极指南:从零开始掌握虚幻引擎脚本系统
UE4SS终极指南:从零开始掌握虚幻引擎脚本系统 【免费下载链接】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出题艺术:从PHP特性到Flask Debug的攻防博弈 当一道精心设计的CTF题目被成功破解时,出题人与解题者之间往往存在一场无声的思维交锋。作为NewStarCTF 2023 WEB方向的出题人,我想通过复盘"Begin of PHP"和"ErrorFlask"…...
