Python高级用法:路径与文件操作(os与pathlib)

路径与文件

  • 前言
  • 导入包
  • 判断路径存在
  • 判断路径类型(判断文件还是文件夹)
  • 获取父路径
  • 写入读出文件
  • 获得路径中所有子文件/子文件夹
  • 获取文件扩展名
  • 获取多个文件扩展名
  • 获取路径的组件
  • 创建目录
  • 删除文件或空目录

前言

在Python中,os模块提供了与操作系统交互的各种功能,包括文件路径的操作。但是,与pathlib相比,os模块通常使用字符串来表示和操作路径,并且它的API更接近于传统的文件系统操作。一般使用pathlib和os相结合的方式对路径进行操作。

导入包

假设我们有以下的路径结构,在本文中将使用这一结构来演示路径和文件操作。
在这里插入图片描述

import os
from pathlib import Path

判断路径存在

os方式

p = "./testPath/testPath2/file.txt"
if os.path.exists(p):print("路径存在")
else:print("路径不存在")

patlib方式

p = Path("./testPath/testPath2/file.txt")
if p.exists():print("路径存在")
else:print("路径不存在")

判断路径类型(判断文件还是文件夹)

os方式

p = "./testPath/testPath2/file.txt"
if os.path.isfile(p):print("p为文件")
elif os.path.isdir(p):print("p为文件夹")
else:print("不存在该文件或文件夹")

pathlib方式

p = Path("./testPath/testPath2/file.txt")
if p.is_file():print("p为文件")
elif p.is_dir():print("p为文件夹")
else:print("不存在该文件或文件夹")

获取父路径

os方式

p = "./testPath/testPath2/file.txt"
parent_dir = os.path.dirname(p)
print(parent_dir)

pathlib方式

p = Path("./testPath/testPath2/file.txt")
print(p.parent)

写入读出文件

os方式

with open(p, "w") as f:f.write("Hello, World!")with open(p, "r") as f:content = f.read()
print(content)

pathlib方式

p.write_text("Hello, World!")
content = p.read_text()
print(content)

获得路径中所有子文件/子文件夹

os方式

dir_path = "./testPath/testPath2"
for item in os.listdir(dir_path):item_path = os.path.join(dir_path, item)if os.path.isfile(item_path):print(item_path)elif os.path.isdir(item_path):print(item_path)

pathlib方式

p = Path("./testPath/testPath2")
for item in p.iterdir():print(item)

获取文件扩展名

os方式

p = "./testPath/testPath2/file.txt"
_, ext = os.path.splitext(p)
print(ext) 

pathlib方式

p = Path("./testPath/testPath2/file.txt")
print(p.suffix) 

获取多个文件扩展名

os方式

p = "./testPath/testPath2/file.tar.gz"
base, ext = os.path.splitext(p)
extensions = []
while ext:extensions.append(ext)base, ext = os.path.splitext(base)print(extensions[::-1])

pathlib方式

p = Path("./testPath/testPath2/file.tar.gz")
print(p.suffixes)

获取路径的组件

os方式

p = "./testPath/testPath2/file.txt"
components = []
head, tail = os.path.split(p)
while head and tail:components.append(tail)head, tail = os.path.split(head)
components.append(head)  # 添加根目录或最后一个目录部分
components.reverse()
print(components)

pathlib方式

p = Path("./testPath/testPath2/file.txt")
print(p.parts)

创建目录

os方式

dir_path = "./testPath/testPath2/file3.txt"
os.makedirs(dir_path, exist_ok=True)

pathlib方式

p = Path("./testPath/testPath2/file3.txt")
p.mkdir(parents=True, exist_ok=True)

删除文件或空目录

os方式

dir_path = "./testPath/testPath2/file3.txt"
os.rmdir(dir_path)

pathlib方式

p = Path("./testPath/testPath2/file3.txt")
p.rmdir()

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

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

相关文章

美国裸机云站群服务器使用指南

在当今数字化时代,网站和应用程序的稳定运行对于企业和个人都至关重要。为了满足日益增长的业务需求,裸机云站群服务器成为了一个理想的选择。以下是美国裸机云站群服务器的使用指南,帮助您更好地利用这一强大的云服务。 一、选择信誉良好的云…

AI大模型在运动项目的深度融合和在穿戴设备的实践及未来运动健康技术发展

文章目录 1. 技术架构2. 模型选择2.1 LSTM(长短期记忆网络)2.2 CNN(卷积神经网络)2.3 Transformer 3. 数据处理数据预处理 4. 实时性要求4.1 边缘计算4.2 模型优化 5. 数据隐私与安全6. 深入分析AI大模型在穿戴设备的应用和未来发…

k8s中的pod域名解析失败定位案例

问题描述 我在k8s中启动了一个Host网络模式的pod,这个pod的域名解析失败了。 定位步骤 敲kubectl exec -it [pod_name] -- bash进入pod后台,查看/etc/resolv.conf,发现nameserver配的有问题。这里我预期的nameserver应该使用宿主机的&…

动态 SQL

动态 SQL 是 MyBatis 的强大特性之一&#xff0c;能够完成不同条件下不同的 sql 拼接。也就是说执行的 SQL 语句并不是固定的&#xff0c;而是不同人的不同操作执行的语句会有所差异。MyBatis 通过使用 标签 的方式来实现这种灵活性的。 <if>标签 例如在有一些网站进行…

【linux网络(四)】传输层协议详解(上)

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; Linux网络 1. 前言2. UDP协议…

CPN Tools学习——从平面网构建分层 PN

1.先创建平面petri网 创建如下petri网&#xff1a; CPN ide创建petri网真的舒服很多&#xff0c;但是教程又是CPN Tools的&#xff0c;我的想法是看两个版本能不能互通&#xff0c;在前者创建&#xff0c;在后者运行学习。 新增定义&#xff1a; colset E unit with e; 但…

Go模板页面浏览器显示HTML源码问题

<!--* Title: This is a file for ……* Author: JackieZheng* Date: 2024-06-09 17:00:01* LastEditTime: 2024-06-09 17:01:12* LastEditors: Please set LastEditors* Description:* FilePath: \\GoCode\\templates\\index.html --> <!DOCTYPE html> <html …

高并发ping多台主机IP

简介 社区或者是大型公司往往有成千上万或者几百台设备&#xff0c;保持设备始终在线对网络运维人员来说至关重要&#xff0c;然而一个一个登录检查&#xff0c;或者一个一个ping并不明智&#xff0c;累人且效率极低&#xff0c;并出错率高。花钱买检测服务当我没说。 shell编…

acwing 5575. 改变数值 | c++题解及解释

acwing 5575. 改变数值 题目 代码及解释 #include <iostream> #include <cstring> #include <algorithm> #include <unordered_map> using namespace std;const int N305; int a[N],b[N]; unordered_map<int,int>f[N]; const int INF1e9;int gc…

Dev C++ 安装及使用方法教程-干活多超详细

Dev C 是一款非常好用&#xff0c;简约的C/C开发工具。可以减少很多创建工程的繁琐步骤&#xff0c;很快的进行开发。对于只用于来写代码的人来说&#xff0c;是比较轻量以及极速的。 Dev C 是一个windows下的c和c程序的集成开发环境。它使用mingw32/gcc编译器&#xff0c;遵循…

Docker部署常见应用之大数据基础框架Hadoop

文章目录 Hadoop简介主要特点核心组件生态系统 Docker Compose 部署集群参考文章 Hadoop简介 Hadoop是一个开源框架&#xff0c;由Apache软件基金会开发&#xff0c;用于在普通硬件构建的集群中存储和处理大量数据。它最初由Doug Cutting和Mike Cafarella创建&#xff0c;并受…

质疑标普,理解标普,加入标普

上周我在文章里提到过&#xff0c;标普信息科技LOF(161128)出现套利机会。每天申购卖出&#xff0c;到现在一个账户56*6336润。 得益于美股七巨头轮流领涨&#xff0c;161128依旧坚挺&#xff0c;每天溢价都是10%&#xff0c;成交量1个多亿&#xff0c;场内新增份额才400万份&…

2024年黑龙江省特岗招聘公告出了!!!

2024年黑龙江省农村义务教育阶段学校特设岗位教师招聘822人公告 (1、网上报名 时间&#xff1a;6月17日9&#xff1a;00—6月22日17&#xff1a;00。 网址&#xff1a; https&#xff1a;//sfyz.hljea.org.cn&#xff1a;7006/tgjs 2、网上资格审查 资格审查时间&#xff1a;6月…

马克·雷伯特访谈:机器人的未来及波士顿动力的创新之路

引言 机器人技术作为现代科技的前沿领域&#xff0c;始终吸引着大量的关注与研究。波士顿动力公司作为这一领域的领军者&#xff0c;其创始人兼前CEO马克雷伯特&#xff08;Marc Raibert&#xff09;近日在主持人莱克斯弗里德曼&#xff08;Lex Fridman&#xff09;的播客节目…

[Mdfs] lc3067. 在带权树网络中统计可连接服务器对数目(邻接表+图操作基础+技巧+好题)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接&#xff1a;3067. 在带权树网络中统计可连接服务器对数目 2. 题目解析 挺有意思的一道题目&#xff0c;重点是要能够读懂题目&#xff0c;然后结合几个图相关的处理技巧即可拿下。 图存储&#xff1a;邻接表即可。无向无…

HP惠普暗影精灵10 OMEN Gaming Laptop 16-wf1xxx原厂Win11系统镜像下载

惠普hp暗影精灵10笔记本电脑16-wf1000TX原装出厂Windows11&#xff0c;恢复开箱状态oem预装系统安装包&#xff0c;带恢复重置还原 适用型号:16-wf1xxx 16-wf1000TX,16-wf1023TX,16-wf1024TX,16-wf1025TX, 16-wf1026TX,16-wf1027TX,16-wf1028TX,16-wf1029TX, 16-wf1030TX,16-…

Electron无感打印 静默打印(vue3 + ts + vite)

&#xff08;electron vue3 项目搭建部分 自行查找其他资源 本文只讲解Electronvue3 如何实现静默打印&#xff09; 第一步获取打印机资源 渲染端代码&#xff08;vue里面&#xff09; // 因使用了vite所以在浏览器中打开 require会报错 只能在electron中 const { ipcRender…

FreeRTOS:4.内存管理

FreeRTOS内存管理 目录 FreeRTOS内存管理1. 为什么不直接使用C库函数的malloc和free函数2. FreeRTOS的五种内存管理方式3. heap4源码分析3.1 堆内存池3.2 内存块的链表数据结构3.3 堆的初始化3.4 堆的内存分配3.5 堆的内存释放 4. 总结 1. 为什么不直接使用C库函数的malloc和fr…

Cisco Packet Tracer实验(四)

生成树协议&#xff08;Spanning Tree Protocol&#xff09; 交换机在目的地址未知或接收到广播帧时是要进行广播的。如果交换机之间存在回路/环路&#xff0c;那么就会产生广播循环风暴&#xff0c;从而严重影响网络性能。 而交换机中运行的STP协议能避免交换机之间发生广播…

【云原生| K8S系列】Kubernetes Daemonset,全面指南

Kubernetes中的DaemonSet是什么? Kubernetes是一个分布式系统&#xff0c;Kubernetes平台管理员应该有一些功能可以在所有节点上运行特定于平台的应用程序。例如&#xff0c;在所有Kubernetes节点上运行日志代理。 这就是Daemonset发挥作用的地方。 Daemonset是一个原生的K…