ch6文件操作和异常处理

2024-03-21 01:52
文章标签 异常 操作 处理 ch6

本文主要是介绍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 中常用的读取文件内容的函数。根据您的具体需求,可以选择合适的函数进行读取操作。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这篇关于ch6文件操作和异常处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/831435

相关文章

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

使用Java填充Word模板的操作指南

《使用Java填充Word模板的操作指南》本文介绍了Java填充Word模板的实现方法,包括文本、列表和复选框的填充,首先通过Word域功能设置模板变量,然后使用poi-tl、aspose-words... 目录前言一、设置word模板普通字段列表字段复选框二、代码1. 引入POM2. 模板放入项目3.代码

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

Python内存管理机制之垃圾回收与引用计数操作全过程

《Python内存管理机制之垃圾回收与引用计数操作全过程》SQLAlchemy是Python中最流行的ORM(对象关系映射)框架之一,它提供了高效且灵活的数据库操作方式,本文将介绍如何使用SQLAlc... 目录安装核心概念连接数据库定义数据模型创建数据库表基本CRUD操作创建数据读取数据更新数据删除数据查

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

5 种使用Python自动化处理PDF的实用方法介绍

《5种使用Python自动化处理PDF的实用方法介绍》自动化处理PDF文件已成为减少重复工作、提升工作效率的重要手段,本文将介绍五种实用方法,从内置工具到专业库,帮助你在Python中实现PDF任务... 目录使用内置库(os、subprocess)调用外部工具使用 PyPDF2 进行基本 PDF 操作使用

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

Python异常处理之避免try-except滥用的3个核心原则

《Python异常处理之避免try-except滥用的3个核心原则》在Python开发中,异常处理是保证程序健壮性的关键机制,本文结合真实案例与Python核心机制,提炼出避免异常滥用的三大原则,有需... 目录一、精准打击:只捕获可预见的异常类型1.1 通用异常捕获的陷阱1.2 精准捕获的实践方案1.3

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别