ch6文件操作和异常处理

os.listdir(path) 函数详解

功能:

os.listdir(path) 函数用于返回指定目录下的所有文件和文件夹的名字列表,但不包括 ...

参数:

  • path: 要列出的目录的路径。

返回值:

一个包含目录下所有文件和文件夹名字的列表。

示例:

import ospath = "/home/user/Desktop/my_folder"# 列出指定目录下的所有文件和文件夹
files = os.listdir(path)# 打印文件和文件夹名字
for file in files:print(file)

输出:

file1.txt
file2.txt
folder1
folder2

注意事项:

  • os.listdir(path) 函数只返回指定目录下的直接子项,不会递归遍历子目录。
  • 如果目录不存在,os.listdir(path) 函数会抛出 OSError 异常。
  • os.listdir(path) 函数返回的列表顺序是随机的,并非按照文件名排序。

扩展:

  • 可以使用 os.walk(path) 函数递归遍历目录及其子目录。
  • 可以使用 os.path.isfile(path)os.path.isdir(path) 函数判断文件或文件夹是否存在。
  • 可以使用 os.path.join(path, file) 函数拼接文件路径。

参考资料:

  • os.listdir() 函数: https://www.runoob.com/python/os-listdir.html
  • os 模块: https://docs.python.org/3/library/os.html

总结:

os.listdir(path) 函数是 Python 中一个常用的函数,用于列出指定目录下的所有文件和文件夹。

在这里插入图片描述
在这里插入图片描述

collections.deque() 函数详解

功能:

collections.deque() 函数用于创建一个双端队列,也称为双向队列。双端队列是一种特殊的队列,允许从两端插入和删除元素。

参数:

  • iterable: 可选参数,用于初始化队列。如果指定,则将 iterable 中的元素添加到队列中。

返回值:

一个新的双端队列对象。

示例:

from collections import deque# 创建一个空队列
queue = deque()# 从队列尾部添加元素
queue.append(1)
queue.append(2)
queue.append(3)# 从队列头部删除元素
queue.popleft()# 查看队列中元素
print(queue)

输出:

[2, 3]

deque 对象的常用方法:

  • append(): 将元素添加到队列尾部。
  • appendleft(): 将元素添加到队列头部。
  • pop(): 从队列尾部删除元素。
  • popleft(): 从队列头部删除元素。
  • extend(): 将 iterable 中的元素添加到队列尾部。
  • extendleft(): 将 iterable 中的元素添加到队列头部。
  • rotate(): 旋转队列。
  • index(): 查找元素在队列中的位置。
  • count(): 统计元素在队列中出现的次数。

deque 对象的优势:

  • 双端队列支持从两端插入和删除元素,比列表更灵活。
  • 双端队列在插入和删除元素时效率较高,特别是当队列长度较大时。

deque 对象的应用场景:

  • 实现队列:双端队列可以用来实现队列数据结构,例如先进先出 (FIFO) 队列或后进先出 (LIFO) 队列。
  • 实现缓存:双端队列可以用来实现缓存,例如最近最少使用 (LRU) 缓存或最近最先使用 (LFU) 缓存。
  • 实现滑动窗口:双端队列可以用来实现滑动窗口,例如用于文本分析或数据流分析。

总结:

collections.deque() 函数是 Python 中一个常用的函数,用于创建双端队列。双端队列是一种特殊的队列,允许从两端插入和删除元素,具有较高的效率和灵活性,可以用于实现队列、缓存、滑动窗口等数据结构。

在这里插入图片描述
在这里插入图片描述

os.walk详解

os.walk 是 Python 的 os 模块中用于遍历目录树的函数。它可以帮助您轻松地访问目录及其所有子目录中的文件和文件夹。

功能:

  • 遍历指定目录及其所有子目录。
  • 返回一个生成器,每次迭代都会生成一个包含三个元素的元组:
    • root: 当前正在遍历的目录的绝对路径。
    • dirs: 一个包含当前目录中所有子目录名称的列表(不包含点(.)和双点(…))。
    • files: 一个包含当前目录中所有文件名称的列表。

参数:

  • top: 要遍历的目录的绝对路径(字符串)。

返回值:

一个生成器,每次迭代都会生成一个包含 rootdirsfiles 的元组。

示例:

import os# 指定要遍历的目录
top_dir = "/home/user/documents"# 遍历目录树
for root, dirs, files in os.walk(top_dir):# 打印当前目录print(f"Current Directory: {root}")# 遍历子目录for dir in dirs:print(f"\tSubdirectory: {dir}")# 遍历文件for file in files:print(f"\tFile: {file}")

输出 (示例):

Current Directory: /home/user/documentsSubdirectory: workSubdirectory: personalFile: budget.txt
Current Directory: /home/user/documents/workFile: report.docxFile: presentation.pptx
Current Directory: /home/user/documents/personalFile: journal.txtFile: photos.zip

注意事项:

  • os.walk 函数不会对符号链接进行递归遍历。
  • 如果目录不存在,os.walk 函数不会抛出异常,而是会跳过该目录。
  • 遍历过程是深度优先的,即会优先遍历当前目录的所有子目录,然后再返回到父目录遍历其它的子目录。

扩展:

  • 可以通过修改循环逻辑来定制遍历行为,例如只遍历文件、只遍历特定类型的文件等。
  • 可以结合 os.path.join 函数拼接文件路径。
  • 可以使用异常处理来捕获访问权限等错误。

参考资料:

  • os.walk() 方法: https://www.runoob.com/python/os-walk.html
  • os 模块: https://docs.python.org/3/library/os.html

总结:

os.walk 是一个功能强大的函数,可以帮助您高效地遍历目录树并访问文件和文件夹。通过理解其功能和用法,您可以轻松地编写脚本来管理文件系统中的资源。

在这里插入图片描述
在这里插入图片描述

readlines () 和 readline() 函数详解

在写第四道关卡,少了一个s,差距好大
功能:

  • readlines()readline() 函数都是 Python 中用于读取文件内容的函数。
  • 两者都以字符串形式返回文件内容,但它们在读取方式和返回结果上存在一些差异。

readlines():

  • 一次性读取文件所有行,并返回一个包含所有行内容的列表。
  • 适用于需要一次性处理所有文件内容的情况,例如统计文件行数、搜索文件中的关键字等。

readline():

  • 每次读取文件的一行,并返回该行内容。
  • 适用于需要逐行处理文件内容的情况,例如读取文件并逐行输出、分析文件内容等。

示例:

# 使用 readlines() 函数读取文件
with open("my_file.txt", "r") as f:lines = f.readlines()# 统计文件行数
print(len(lines))# 使用 readline() 函数读取文件
with open("my_file.txt", "r") as f:line = f.readline()while line:# 处理文件内容print(line)line = f.readline()

输出 (示例):

5
This is the first line.
This is the second line.
This is the third line.
This is the fourth line.
This is the fifth line.

比较:

函数读取方式返回结果适用场景
readlines()一次性读取所有行包含所有行内容的列表一次性处理所有文件内容
readline()每次读取一行该行内容逐行处理文件内容

注意事项:

  • readlines() 函数会将文件所有内容读入内存,因此对于大型文件可能会造成内存压力。
  • readline() 函数每次只读取一行,因此对内存的压力较小,但需要循环读取文件内容,可能会降低效率。

扩展:

  • 可以使用 for 循环逐行读取文件内容,避免一次性读取所有内容。
  • 可以使用 os.path.getsize() 函数获取文件大小,以便根据文件大小选择合适的读取方式。

总结:

readlines()readline() 函数是 Python 中常用的读取文件内容的函数。根据您的具体需求,可以选择合适的函数进行读取操作。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

备战秋招(coding篇)

其中coding题目来源于师兄面试经验 1、链表的结构体反转链表 本质上就是一个构造函数 struct ListNode{int val_;ListNode* next_;ListNode() : val_(0), next_(NULL) {}ListNode(int x) : val_(x), next_(NULL) {}ListNode(int x, ListNode* next) : val_(x), next_(next) …

蓝桥杯day1刷题日记-错误票据-特殊年份-小平方-刷题统计-解码

一条蓝色的鲨鱼 跟着dalaoB站的题单来的 P8598 [蓝桥杯 2013 省 AB] 错误票据 #include <iostream> #include <algorithm> using namespace std; int cnt; int a[100010]; int q[100010]; int maxs,mins; int m,n;int main() {cnt-1;maxs-1e9,mins1e9;while(cin&…

Crypto Gladiator League (CGL)

《加密角斗士》是一款完全链上游戏。所有角斗士、装备、代币等的生成过程都可以透明追溯。不可能被篡改或欺骗&#xff0c;使所有游戏物品都是真实资产。 CGL 现已升级为全链游戏平台和 Web3 游戏流量门户&#xff0c;通过多维度收集用户数据&#xff0c;并将数据应用于游戏中&…

AcWing20:用两个栈实现队列

题目 请用栈实现一个队列&#xff0c;支持如下四种操作&#xff1a; push(x) – 将元素x插到队尾&#xff1b;pop() – 将队首的元素弹出&#xff0c;并返回该元素&#xff1b;peek() – 返回队首元素&#xff1b;empty() – 返回队列是否为空&#xff1b; 注意&#xff1a;…

【Java11下载、安装、部署指南】

oracle jdk11下载 oracle jdk所有版本归档【archive】下载地址&#xff1a; https://www.oracle.com/java/technologies/downloads/archive/ oracle jdk11下载地址&#xff1a; https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html 配置或修改wi…

软件工程-第9章 软件工程项目管理概述

9.1 软件工程管理活动 9.2 软件规模、成本和进度估算 9.3 能力成熟度模型CMM 9.4 ISO 9000系列标准简介 9.5 CMM与ISO 9000系列标准的比较 9.6 本章小结

C++ 拷贝构造函数和析构函数

C 拷贝构造函数和析构函数 拷贝构造函数 在C中&#xff0c;拷贝构造函数是一种特殊的构造函数&#xff0c;它用于创建一个新对象作为现有对象的副本。当使用一个已存在的对象来初始化同类型的新对象&#xff0c;或者从函数中返回对象时&#xff08;虽然大多数现代C编译器会优…

Matlab|基于多目标粒子群算法的配电网储能选址定容

目录 一、主要内容 二、主要流程 三、部分程序 四、程序结果 五、程序链接 一、主要内容 程序是对文章《基于多目标粒子群算法的配电网储能选址定容》的方法复现&#xff0c;具体内容如下&#xff1a; 以系统节点电压水平&#xff08;电网脆弱性&#xff09;、网络损耗以及…

使用poi向excel中插入附件(以pdf为例)

最近在使用easyExcel操作excel文件时&#xff0c;一直想找到一个方法可以往excel中填充附件&#xff0c;但是目前只发现poi可以插入附件&#xff0c;于是将方法记录如下&#xff1a; public class poiTest {/*** 写个main方法来做一个测试* param args*/public static void ma…

数据库系统概论-第5章 数据库完整性

5.1 实体完整性 5.2 参照完整性 5.3 用户定义完整性 5.4 完整性约束命名子句 5.5 域中的完整性限制 5.6 断言 5.7 触发器 5.8 小结

Pytest自动化测试框架快速上手(超详细)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号&#xff1a;互联网杂货铺&#xff0c;回复1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;薪资嘎嘎涨 pytest是一个非常成熟的全功能的Python测试框架&#…

蓝桥杯单片机快速开发笔记——NE555测频

一、原理分析 NE555作为一种多功能集成电路&#xff0c;在信号发生和频率测量方面具有广泛的应用。通过合理配置和连接外部元件&#xff0c;可以实现不同类型的信号发生和频率测量功能。 原理&#xff1a; 信号发生器&#xff1a; NE555可以配置为多种不同的振荡器电路&#x…

【鸿蒙HarmonyOS开发笔记】通知模块之发布基础类型通知,内含如何将图片变成PixelMap对象

通知简介 应用可以通过通知接口发送通知消息&#xff0c;终端用户可以通过通知栏查看通知内容&#xff0c;也可以点击通知来打开应用。 通知常见的使用场景&#xff1a; 显示接收到的短消息、即时消息等。 显示应用的推送消息&#xff0c;如广告、版本更新等。 显示当前正…

前后端路径一致报Request failed with status code 404

场景&#xff1a; 前后端路径一致报Request failed with status code 404 解决方案&#xff1a; 1&#xff1a;检查网关是否增加路径和重启网关模块 2&#xff1a;检查是否controller加注解 3&#xff1a;检查前后端路径是否一致注意路径是否带空格

基于cnn深度学习的yolov5+pyqt+分类+resnet+骨龄检测系统

往期热门博客项目回顾&#xff1a; 计算机视觉项目大集合 改进的yolo目标检测-测距测速 路径规划算法 图像去雨去雾目标检测测距项目 交通标志识别项目 yolo系列-重磅yolov9界面-最新的yolo 姿态识别-3d姿态识别 深度学习小白学习路线 YOLOv5与骨龄识别 YOLOv5&a…

极简生活|2024年让自己越来越好的18个极简好习惯

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 转眼间已经进入了2024年&#xff0c;新的一年&#xff0c;新的开始。 俗话说&#xff1a;百尺高台起于垒土&#xff0c;千里之堤毁于蚁穴。 好习惯积累的越多&#xff0c;坏习惯越来越少&#xff0c;我们的生活才能越…

春招面试高频题目总结

面试问题 redis 可以用于进程间通信吗&#xff1f; Why&#xff1f;How? ---> 延展一下 有哪些进程间通信技术, 优劣如何&#xff1f; 有大量的插入sql语句&#xff0c;一条条的插入性能很差&#xff0c;如何通过事务进行优化&#xff1f; 保证线程安全的策略有哪些&…

【NLP笔记】预训练+微调范式之OpenAI Transformer、ELMo、ULM-FiT、Bert..

文章目录 OpenAI TransformerELMoULM-FiTBert基础结构Embedding预训练&微调 【原文链接】&#xff1a; BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 【本文参考链接】 The Illustrated BERT, ELMo, and co. (How NLP Cracked Tra…

STL第一弹

2 STL初识 2.1 STL的诞生 长久以来&#xff0c;软件界一直希望建立一种可重复利用的东西 C的面向对象和泛型编程思想&#xff0c;目的就是复用性的提升 大多情况下&#xff0c;数据结构和算法都未能有一套标准,导致被迫从事大量重复工作为了建立数据结构和算法的一套标准,诞生…

JAVA_Response

1.完成重定向 重定向代码实现 1.重定向资源跳转的方法 //1.设置状态码为302 response.setStatus(302); //2.设置响应头location response.setHeader("location","/xxx/aaa"); 2.简单的方法 response.sendRedirect("/xxx/aaa");重定向特点数据(…