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

相关文章

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

Git中恢复已删除分支的几种方法

《Git中恢复已删除分支的几种方法》:本文主要介绍在Git中恢复已删除分支的几种方法,包括查找提交记录、恢复分支、推送恢复的分支等步骤,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录1. 恢复本地删除的分支场景方法2. 恢复远程删除的分支场景方法3. 恢复未推送的本地删除分支场景方法4. 恢复

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

使用Python实现在Word中添加或删除超链接

《使用Python实现在Word中添加或删除超链接》在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能,本文将为大家介绍一下Python如何实现在Word中添加或... 在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能。通过添加超

Window Server2016加入AD域的方法步骤

《WindowServer2016加入AD域的方法步骤》:本文主要介绍WindowServer2016加入AD域的方法步骤,包括配置DNS、检测ping通、更改计算机域、输入账号密码、重启服务... 目录一、 准备条件二、配置ServerB加入ServerA的AD域(test.ly)三、查看加入AD域后的变

Window Server2016 AD域的创建的方法步骤

《WindowServer2016AD域的创建的方法步骤》本文主要介绍了WindowServer2016AD域的创建的方法步骤,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、准备条件二、在ServerA服务器中常见AD域管理器:三、创建AD域,域地址为“test.ly”

NFS实现多服务器文件的共享的方法步骤

《NFS实现多服务器文件的共享的方法步骤》NFS允许网络中的计算机之间共享资源,客户端可以透明地读写远端NFS服务器上的文件,本文就来介绍一下NFS实现多服务器文件的共享的方法步骤,感兴趣的可以了解一... 目录一、简介二、部署1、准备1、服务端和客户端:安装nfs-utils2、服务端:创建共享目录3、服