08.Python文件与异常(文件的open、write、read、seek方法总结+文件备份与OS类方法+异常处理机制及自定义异常+代码示例)

本文主要是介绍08.Python文件与异常(文件的open、write、read、seek方法总结+文件备份与OS类方法+异常处理机制及自定义异常+代码示例),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

⽂件操作

open&write

open概述:是Python中用于打开文件的内置函数。通过一个文件路径作为参数,返回一个文件对象,用来读取、写入或操作文件。返回的文件对象需要定义变量进行接收,变量是否可进行写入追加等操作取决于 open 函数的 mode 类型。文件对象不用后需要使用 close() 关闭

open格式open(file, mode, buffering, encoding, errors, newline, closefd, opener)

PS:file 文件路径为必选项,其它均为可选项,mode 指定文件操作模式,较为常用。buffering 指定用于加载文件的缓冲区大小,encoding 指定文件的编码格式, errors 指定编码错误处理方式,newline 指定文本文件的换行符处理方式,, closefd 指是否在文件关闭时同时关闭文件描述符,opener 用于自定义文件打开器。

# Python默认省略的open参数
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

mode选项:常用模式可以主要可以分为三类,动作 r、w、a、x,文件b、t,以 + 操作,其中动作模式为基础模式,可单独使用,也以与文件、+进行组合使用。

文本模式

功能描述

r

只读模式(默认)

w

写入模式,如果文件存在则清空内容后重新写入,如果文件不存在则创建新文件

a

追加模式,在文件末尾添加新内容,如果文件不存在则创建新文件

x

创建模式,只能用于创建新文件,如果文件已存在则抛出异常

b

二进制模式,用于处理二进制文件

t

文本模式(默认),用于处理文本文件

+

读写模式,可同时进行读写操作

write概述:即写入操作,在 open 得到的返回对象不是只读对象时进行使用,根据 mode 的不同,大体可以分为覆盖写入w、创建写入x、追加写入a三种。

file_path = r'E:\2023\Python\1111.txt'
# 使用绝对路径打开文件
file = open(file_path, 'r')
content = file.read()
print(content)
file.close()
# 打开文件以写入模式写入内容
file = open('example.txt', 'w')
file.write('Hello, World!\n')  # 写入内容
file.close()
# 打开文件以独占创建模式写入内容
try:file = open('example.txt', 'x')file.write('Hello, World!\n')  # 写入内容file.close()
except FileExistsError:print("文件已经存在!")
read & seek

概述:Python 中提供了不同功能的读文件方法,如 read 、readlines、readline等。seek() 则用于移动文件指针,可以改变当前读取或写入操作的位置。

函数方法

功能描述

file_object.read( num )

从文件中读取长度为 num 字符的数据,默认省略表示所有

file_object.readline()

一次读取文件的一行内容

file_object.readlines()

将文件一次性读取放在一个列表中,每行作为一个元素

# 读取文件内容并打印
file = open('example.txt', 'r')# 使用 read(num) 方法读取文件内容
content1 = file.read(10)  # 读取前 10 个字符
print(content1)# 移动文件指针到文件开头读取,否则从第11个开始读
file.seek(0)# 使用 readline() 方法读取文件内容
line1 = file.readline()  # 读取第一行内容
print(line1)# 使用 readlines() 方法读取文件内容
lines = file.readlines()  # 读取剩余所有行内容,存储为列表
print(lines)file.close()
备份与os模块

文件备份:其本质是通过复制原始文件的内容,并将其保存到一个新的文件中,从而创建一个与原始文件内容相同的副本。

备份流程1、确定要备份的原始文件路径。

2、生成备份文件路径,可以在原始文件路径后添加特定的后缀或目录。

3、打开原始文件和备份文件,从原始文件读取内容,并将其写入备份文件。

4、关闭原始文件和备份文件。

5、完成备份过程,输出相应的成功信息或错误信息。

def backup_file(file_path):# 生成备份文件路径backup_path = file_path + '.bak'try:# 打开源文件和备份文件with open(file_path, 'rb') as src_file, open(backup_path, 'wb') as dest_file:# 从源文件读取内容并写入备份文件dest_file.write(src_file.read())print(f"成功创建文件备份:{backup_path}")except FileNotFoundError:print("源文件不存在")except IOError:print("备份文件创建失败")# 调用备份函数
file_path = 'example.txt'
backup_file(file_path)

os模块:是Python标准库中的一个内置模块,可进行文件和目录操作、文件路径操作、系统环境和变量设置、进程管理、文件权限和属性管理等功能。

import os# 文件和目录操作
os.mkdir('mydir')  			# 创建目录
os.rename('oldname.txt', 'newname.txt')  # 重命名文件
os.remove('file.txt')  		# 删除文件
os.rmdir('mydir')  			# 删除空目录
os.listdir('目录') 			# 获取目录列表
os.path.exists('file.txt')  # 判断文件是否存在
os.getcwd() 				# 获取当前目录# 文件路径操作
path = os.path.join('folder', 'file.txt')  # 拼接路径
dirname, basename = os.path.split('/path/to/file.txt')  # 分离路径
filename = os.path.basename('/path/to/file.txt')  # 获取文件名# 系统环境和变量
value = os.environ.get('HOME')  # 获取环境变量值
os.environ['PATH'] = '/usr/local/bin'  # 设置环境变量值
hostname = os.uname().nodename  # 获取主机名
current_dir = os.getcwd()  # 获取当前工作目录# 进程管理
pid = os.fork()  # 创建子进程
os.system('ls -l')  # 执行外部命令# 文件权限和属性
os.chmod('file.txt', 0o644)  # 修改文件权限
os.chown('file.txt', uid, gid)  # 修改文件所有者# 其他操作
os.execv('/bin/ls', ['ls', '-l'])  # 执行文件操作
timestamp = os.path.getmtime('file.txt')  # 获取文件修改时间
resolved_path = os.path.realpath('symlink.txt')  # 解析路径名中的符号链接

Python异常

基本结构

概述:是一种用于捕获和处理程序运行过程中可能出现的错误或异常情况的机制。通过使用异常处理,可以使程序在遇到错误时能够适当的处理和响应。Exception是所有程序异常类的父类。

相关关键字:

try:定义一个包含可能引发异常的代码块。

except:指定捕获特定类型异常的处理代码块。

else:可选关键字,指定在没有发生异常时执行的代码块。

finally:可选关键字,指定无论是否发生异常都会执行的代码块。

raise:用于重新抛出当前捕获的异常,将异常传递给上一级调用栈或更上层的异常处理代码进行处理。

as:用于将捕获的异常赋值给一个变量,以便在 except 代码块中访问异常对象的属性和方法。

try:# 可能引发异常的代码块,最好只放⼀行
except ExceptionType1:# 处理特定类型异常的代码块
except ExceptionType2:# 处理特定类型异常的代码块
...
else:# 没有发生异常时执行的代码块
finally:# 无论是否发生异常都会执行的代码块
异常使用

 多个异常捕获:可以把要捕获的异常类型的名字,放到except 后,并使⽤元组的方式进行书写。

try:print(1/0)
except (NameError, ZeroDivisionError):print('有错误')

捕获异常描述信息:即通过 as 将捕获到的特定类型的异常,并将异常的信息保存到一个变量中。

try:# 可能引发异常的代码块
except Exception as result:# 处理特定类型异常的代码块# 可以使用 result 变量访问异常信息
''' 捕获所有异常 '''
try:print(num)
except Exception as result:print(result)

异常的传递处理:当一个函数A调用了另一个函数B时,如果在函数B内部发生了异常并没有被捕获处理,那么该异常会向上层调用栈传递,直至找到合适的异常处理代码或导致程序终止,通常和 raise 一起使用。

def divide_numbers(a, b):try:result = a / breturn resultexcept ZeroDivisionError as err:print("除数不能为零")raise  # 重新抛出异常
def calculate_average(numbers):try:total = sum(numbers)average = divide_numbers(total, len(numbers))return averageexcept Exception as err:print("计算平均值时发生异常:", err)
numbers = []
average = calculate_average(numbers)
print("平均值:", average)

自定义异常类:需要自己定义一个类,并继承 Exception,通常根据实际情况自定义__init__以及__str__(self),前者可以使用默认,后者用于设置抛出异常的描述(打印)信息。

class ShortInputError(Exception):def __init__(self, length, min_len):self.length = lengthself.min_len = min_len# 设置抛出异常的描述信息def __str__(self):info = f'你输⼊的⻓度是{self.length}, 不能少于{self.min_len}个字符'return info
def main():try:pwd = input('请输⼊入密码:')if len(pwd) < 13:raise ShortInputError(len(pwd), 13)except Exception as result:passprint(result)else:print('密码已经输⼊入完成')
main()


这篇关于08.Python文件与异常(文件的open、write、read、seek方法总结+文件备份与OS类方法+异常处理机制及自定义异常+代码示例)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

Java 方法重载Overload常见误区及注意事项

《Java方法重载Overload常见误区及注意事项》Java方法重载允许同一类中同名方法通过参数类型、数量、顺序差异实现功能扩展,提升代码灵活性,核心条件为参数列表不同,不涉及返回类型、访问修饰符... 目录Java 方法重载(Overload)详解一、方法重载的核心条件二、构成方法重载的具体情况三、不构

Python包管理工具pip的升级指南

《Python包管理工具pip的升级指南》本文全面探讨Python包管理工具pip的升级策略,从基础升级方法到高级技巧,涵盖不同操作系统环境下的最佳实践,我们将深入分析pip的工作原理,介绍多种升级方... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

Python中将嵌套列表扁平化的多种实现方法

《Python中将嵌套列表扁平化的多种实现方法》在Python编程中,我们常常会遇到需要将嵌套列表(即列表中包含列表)转换为一个一维的扁平列表的需求,本文将给大家介绍了多种实现这一目标的方法,需要的朋... 目录python中将嵌套列表扁平化的方法技术背景实现步骤1. 使用嵌套列表推导式2. 使用itert