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) …

Crypto Gladiator League (CGL)

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

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

oracle jdk11下载 oracle jdk所有版本归档【archive】下载地址: https://www.oracle.com/java/technologies/downloads/archive/ oracle jdk11下载地址: 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 本章小结

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

文章目录 OpenAI TransformerELMoULM-FiTBert基础结构Embedding预训练&微调 【原文链接】: 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的诞生 长久以来,软件界一直希望建立一种可重复利用的东西 C的面向对象和泛型编程思想,目的就是复用性的提升 大多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作为了建立数据结构和算法的一套标准,诞生…

Gradio官方文档

文章目录 构建您的第一个demo分享您的demo进度条受密码保护的应用程序The Interface class(接口类)Components Attributes(组件属性)多个输入和输出组件图像示例嵌套列表描述性内容手风琴中的附加输入The 4 Kinds of Gradio Inter…

蓝桥杯Python B组练习——完美的代价

一、题目 问题描述   回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。   交换的定义是…

C语言-----冒泡排序

今天,让我们来学习一下C语言中一个简单的排序算法------冒泡排序。 什么是冒泡排序呢? 冒泡排序是C语言中一个可以将一个数组的内容按照升序或者降序进行重新排列的算法。简单来说,是一种排序的思维。 冒泡排序的核心思想:让同…

【手撸IM】通讯协议设计与实现

【手撸IM】专题由来:之前利用业余空闲时间写一个Java版Akka-Rpc,并且基于它写了一个分布式高性能文件服务,从反馈上来看,还是得到了一定的关注,甚至部分同学真的基于此直接抄作业和二开了。因此有了再进一步去手撸一个…

【Vue】el-select下选组件

系列文章 【Vue】vue增加导航标签 本文链接:https://blog.csdn.net/youcheng_ge/article/details/134965353 【Vue】Element开发笔记 本文链接:https://blog.csdn.net/youcheng_ge/article/details/133947977 【Vue】vue,在Windows IIS平台…

修改约束

目录 修改约束 创建数据库 添加约束 删除约束 Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 修改约束 如果说表结构的修改还在可以容忍的范畴之内,那么约束的修改是绝对 100% 禁止的 所有的约束一定要在…

【Flutter 面试题】讲一讲 Dart 的一些重要概念?

【Flutter 面试题】讲一讲 Dart 的一些重要概念? 文章目录 写在前面口述回答补充说明完整代码运行结果详细说明 写在前面 🙋 关于我 ,小雨青年 👉 CSDN博客专家,GitChat专栏作者,阿里云社区专家博主&#…