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

相关文章

MySQL 8 中的一个强大功能 JSON_TABLE示例详解

《MySQL8中的一个强大功能JSON_TABLE示例详解》JSON_TABLE是MySQL8中引入的一个强大功能,它允许用户将JSON数据转换为关系表格式,从而可以更方便地在SQL查询中处理J... 目录基本语法示例示例查询解释应用场景不适用场景1. ‌jsON 数据结构过于复杂或动态变化‌2. ‌性能要

postgresql使用UUID函数的方法

《postgresql使用UUID函数的方法》本文给大家介绍postgresql使用UUID函数的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录PostgreSQL有两种生成uuid的方法。可以先通过sql查看是否已安装扩展函数,和可以安装的扩展函数

Python实现终端清屏的几种方式详解

《Python实现终端清屏的几种方式详解》在使用Python进行终端交互式编程时,我们经常需要清空当前终端屏幕的内容,本文为大家整理了几种常见的实现方法,有需要的小伙伴可以参考下... 目录方法一:使用 `os` 模块调用系统命令方法二:使用 `subprocess` 模块执行命令方法三:打印多个换行符模拟

Python实现MQTT通信的示例代码

《Python实现MQTT通信的示例代码》本文主要介绍了Python实现MQTT通信的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 安装paho-mqtt库‌2. 搭建MQTT代理服务器(Broker)‌‌3. pytho

Java中Arrays类和Collections类常用方法示例详解

《Java中Arrays类和Collections类常用方法示例详解》本文总结了Java中Arrays和Collections类的常用方法,涵盖数组填充、排序、搜索、复制、列表转换等操作,帮助开发者高... 目录Arrays.fill()相关用法Arrays.toString()Arrays.sort()A

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

从入门到进阶讲解Python自动化Playwright实战指南

《从入门到进阶讲解Python自动化Playwright实战指南》Playwright是针对Python语言的纯自动化工具,它可以通过单个API自动执行Chromium,Firefox和WebKit... 目录Playwright 简介核心优势安装步骤观点与案例结合Playwright 核心功能从零开始学习

Python 字典 (Dictionary)使用详解

《Python字典(Dictionary)使用详解》字典是python中最重要,最常用的数据结构之一,它提供了高效的键值对存储和查找能力,:本文主要介绍Python字典(Dictionary)... 目录字典1.基本特性2.创建字典3.访问元素4.修改字典5.删除元素6.字典遍历7.字典的高级特性默认字典

Java堆转储文件之1.6G大文件处理完整指南

《Java堆转储文件之1.6G大文件处理完整指南》堆转储文件是优化、分析内存消耗的重要工具,:本文主要介绍Java堆转储文件之1.6G大文件处理的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言文件为什么这么大?如何处理这个文件?分析文件内容(推荐)删除文件(如果不需要)查看错误来源如何避

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java