Python | 文件操作和异常处理

news2024/9/22 9:57:13

  • 博主简介🙇:🎓本科大二学生🎓,立志成为一名全栈开发工程师🎏🎏
  • 分类专栏📘:Python从入门到精通🌻🌻

知识目录

    • 一、文件操作
      • 1.1 打开和关闭文件
      • 1.2 读写文件
    • 二、异常处理
      • 2.1 异常处理格式
      • 2.2 File+Error例题

一、文件操作

1.1 打开和关闭文件

Python open() 方法用于打开一个文件,并返回文件对象。

在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError

  • 打开已存在的文件:
  • 使用r打开可读,写报错io.UnsupportedOperation: not writable
  • 使用w打开可写,读报错io.UnsupportedOperation: not readable
  • 打开不存在的文件
  • 使用r打开报错FileNotFoundError: [Errno 2] No such file or directory: ‘xxx.xxx’
  • 使用w打开会新建文件

下面通过代码分别演示上面的示例。

# 1.1 用只读模式打开已存在的文件

file = open("a.txt", "r") # a.txt文件内容是123
content = file.readline()  # 读不会报错
print(content)
file.write("321")  # 写会报错 io.UnsupportedOperation: not writable
file.close()

# 1.2 用只写模式打开已存在的文件

file = open("a.txt","w")
file.write("123") # 写不会报错
content = file.readline() # 读会报错 io.UnsupportedOperation: not readable
file.close()

# 2.1 用只读模式打开不存在的文件

file = open("b.txt","r") # 报错 FileNotFoundError: [Errno 2] No such file or directory: 'b.txt'
file.close()

# 2.2 用只写模式打开不存在的文件

file = open("b.txt","w")
file.write("123")
file.close()


Python close() 方法用于关闭文件。关闭后文件不能再进行读写操作。

文件IO要及时关闭,防止其他应用程序无法使用这个文件。

1.2 读写文件

  • read()方法读取: 读取指定个数数据,读完后指针移动到最后读取的数据后
  • readline()方法读取:默认读取一行,也可以读取指定数据
  • readlines()方法读取:读取文件的全部数据

a.txt文件里的内容如下:

依次使用上面三种方法读取:

# 1.read()
print("1.使用read方法读取文件:")
f = open("a.txt", "r")
content = f.read(5)  # 读5个字符,读完后光表移到了第五个字符后面
print(content)
content = f.read(5)  # 从第5个字符开始读
print(content)
f.close()

print()

# 2.readline() 读取一行,或读取指定个数的字符
print("2.使用readline方法读取文件:")
f = open("a.txt", "r")
primary = f.readline()
print(primary, end="")
primary = f.readline(5)  # 读取5个字符
print(primary)
f.close()

print()

# 3.readlines() # 以列表的形式,每一行的数据作为一个列表元素,读取全部文件
print("3.使用readlines方法读取文件:")
f = open("a.txt", "r")
content = f.readlines()
print(content)
i = 1
for con in content:
    print("第%d个元素:%s" % (i, con), end="")
    i += 1
f.close()

二、异常处理

2.1 异常处理格式

Python 有两种错误很容易辨认:语法错误和异常。

语法错误是在程序允许前被Python语法分析器检测出来的。

运行期检测到的错误被称为异常。

根据上面的例题,用只读 r 打开一个不存在的文件是将发生FileNotFoundError

下面通过处理这个异常来演示Python异常处理的格式。

(1)处理单个异常


# 用只读模式打开不存在的文件,处理异常
try:
    file = open("b.txt","r") # 报错 FileNotFoundError: [Errno 2] No such file or directory: 'b.txt'
    file.close()
except FileNotFoundError:
    print("出错了")
    pass


(2)处理多个异常

try:
    print(name)  # name未定义将发生nameError
    f = open("b.txt", "r")  # b.txt不存在将发生FileNotFoundError
except (NameError, FileNotFoundError) as ex:  # 定义异常对象ex用于获取异常信息
    print(ex)
    pass

(3)try——except——finally使用

先看下面的代码:

try:
    f = open("b.txt","r") # FileNotFoundError
except FileNotFoundError as ex:
    print(ex) # 打印异常信息
finally:
    f.close()

代码中的 f 是局部变量,finally语句中肯定不能使用f,所以会报NameError。

将代码加以改进:


import time

try:
    f = open("b.txt", "r")  # FileNotFoundError
    try:
        while True:
            content = f.readline()
            if len(content) == 0:
                break
            time.sleep(2)  # 让代码停顿两秒
            print(content)
    finally:
        f.close()
        print("关闭文件")
except FileNotFoundError as ex:
    print(ex)  # 打印异常信息
    

打开a.txt 文件:

2.2 File+Error例题

定义两个函数,分别完成读和写功能

要求将poetry.txt文件内容复制到copy.txt文件中。


# 读操作
def read():
    strs = ""  # 结果串
    flag = True
    try:
        file = open("poetry.txt", "r")  # 文件可能不存在
        try:
            while True:
                content = file.readline()
                if len(content) == 0:
                    break
                strs += content
        finally:
            file.close()
    except FileNotFoundError as ex:
        print(ex)
        flag = False
        pass
    return strs, flag


# 写操作
def write(strs):
    f = open("copy.txt", "w")
    f.write(strs)
    f.close()

# 执行方法
try:
    strs, flag = read()
    write(strs)
    if flag:
        print("copy successfully")
    else:
        print("copy failure")
except Exception as ex:
    print(ex)
    pass

今日份的分享就到这里啦!🌹🌹🌹欢迎关注博主学习不迷路🌹🌹🌹!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/196401.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用TCPA300电流放大器和电流探头进行电流测试

为了进行正确电流测试,工程师需要在使用前对电流探头进行消磁和校零调节,消磁可以消除电流探头的寄生磁场,否则会产生零点的漂移和测量误差,每次进行消磁后,都需要调节探头的零点,消除存在的偏移。电流探头…

垃圾桶溢出识别系统 opencv

垃圾桶溢出识别系统通过Opencvyolo网络模型深度学习技术,对垃圾桶垃圾溢出行为现象进行识别,监测到垃圾桶存在垃圾溢出时,立即抓拍存档 告警及时清理。OpenCV基于C实现,同时提供python, Ruby, Matlab等语言的接口。OpenCV-Python是…

JGroups介绍及入门实战

我们在开发集群系统的过程中,往往需要在多个进程间同步很多状态,比如每个服务器进程的负载状况、数据队列长度等等……。还有一些情况,我们需要把不同的进程分类,然后分发不同的通知消息,最常见的是发出一些运维命令&a…

「YGG Japan」宣布已完成约 295 万美元的新股权私募

ForN(总部位于东京都港区;CEO 藤原哲哉;以下简称 “ForN” )今天宣布,与 ForN 合作的区块链游戏平台 YGG Japan 已完成价值约 295 万美元的私募轮融资,投资方共有 18 家公司。加上本轮融资,YGG …

多种汉语方言语音落地应用,微软智能语音解锁更多交互场景

多年来,微软持续探索 AI 语音合成与识别技术,获得了大量成果:Azure Neural TTS(text-to-speech,语音合成)与 STT(speech-to-text,语音识别)支持的语言区域达到 140 余个&…

GItOps - k8s的微服务实战1 - 构建业务镜像

概述 在学习了容器化、docker和k8s的 Ingress-Nginx 、server 和pod 知识后,开启了 k8s的微服务实战第三篇,在搭建环境废了一点周折,这次实战的目的是集成在gitlab里,实现自动打包、发布的功能。 Mac M2芯 搭建k8s(minikube)超详…

puzzle(0332)色块拼图、物换星移、移星掠形

目录 一,纯色块拼图——旋转 二,物换星移 三,六边形纯色块拼图——旋转 四,纯色块拼图——轮换 五,移星掠形 练习模式 策略 比赛模式 一,纯色块拼图——旋转 这种纯粹就是数字拼图——旋转的简化版…

Web3中文|逆流前行:日本开始拥抱Web3

在最近的一次东京之行中,我发现交谈过的人似乎都没有因FTX崩溃(或之前加密领域的一系列负面事件)感到特别担忧。 众议院议员、日本现今执政党自民党的Web3项目团队成员Masaaki Taira表示,FTX的垮台“对政策制定没有影响”。 尽管…

DC/DC电源模块直流升压线性可调正负输出5v12v24v转0-±50v/±110v/±200v/±250v/±360v/±500v

特点● 效率高达70%以上● 1*2英寸标准封装● 正负电压输出● 价格低● 电压控制,输出电压随控制电压线性变化● 工作温度: -40℃~85℃● 阻燃封装,满足UL94-V0 要求● 温度特性好● 可直接焊在PCB 上应用GRA 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电…

CentOS 7 部署Nginx和前端框架

参考: Centos 7下安装配置Nginx-阿里云开发者社区 (aliyun.com) 阿里P8架构大牛整理的Nginx 从入门到实践,万字详解 安装nginx之后,处理 conf.d下无default.conf文件 1. CentOS 7 下安装配置 Nginx 一、配置 EPEL 源 sudo yum install -y e…

jquery方法学习及案例

JQ框架入手须知封装方法学习及应用插件(白嫖超好用)总结案例推荐网课链接入手须知 1.进官网点3.6版本 2.复制全部代码 3.建立文档名为jquery.min.js,粘贴代码 (用的时候同cssjs引入) 封装方法学习及应用 介绍联系…

Authing,助力先进制造 10 万亿产值之路

工信部表示,截止今年 9 月,一批有竞争力的先进制造业集群正在形成。重点培育的 25 个先进制造业集群,其主导产业产值近 10 万亿元,其中的 17 个集群产值同比增速超过两位数。 Authing 深耕芯片、机器人、航空航天、医药医械等先进…

多品类多SKU存储的四向穿梭车|海格里斯HEGERLS超高RGV四向穿梭车供应

近年来,随着电商、快递的快速发展,物流行业也迎来了智能化、数字化转型。伴随上下游产业链条的智能化升级,物流机器人产品开始被普及、应用。在仓储物流领域,AGV(自动引导车)、AMR(自主移动机器…

2.编写第一个网页

第一个网页 ● 首先建立一个文件夹 ● 之后建立一个文件 ● 文件名称以.html结尾 ● 输入一个!,回车,就会生成一个html框架 ● 其他的部分不用看,稍后会介绍,看这个标签,英文的意思就是标题&#xff…

编写一个简版的数据库维护框架03-父窗口界面

框架的主要内容就是创建一个父类Form,实现基本逻辑。使用时,这些逻辑就无需用户实现。用户只需按照规则,设计好界面即可。 一、简版界面 界面如下: 界面分为两大部分,查询定位和数据维护 查询定位 查询定位将根据…

非极大值抑制NMS与柔性非极大抑制Soft-NMS的python实现

非极大值抑制NMS的python实现 什么是非极大值抑制 非极大值抑制的主要目的是为了消除多余的框,找到最佳的物体检测的位置。 比如我们想要检测手的时候, RCNN网络在训练之后会给出许多个预测框(比图上的更多), 我们先通过他们的置信度筛选出一批不符合的框, 剩下如图…

智能BI与传统报表的区别是什么?

随着企业信息化的深入, 企业的信息化系统日益增多。各个信息化系统也随着应用的逐渐深入, 随之产生大量的信息数据。面对已成几何级增长的数据量, 如何从中提取有效数据, 如何将数据转换为有价值的数据? 成为企业面临的问题之一。 其实与数据相关的工具除了传统报表还有如今火…

百度网盘普通用户如何上传单文件最大4G文件。window split命令如何分割文件上传。

普通用户使用百度网盘Web端上传文件时,单文件最大支持1G大小;使用网盘PC客户端上传文件时,单文件最大支持4G;如果您需要上传大于4G文件,可充值百度网盘会员,其中:1、百度网盘会员使用网盘PC客户…

案例:DNN进行分类

7.2 案例:DNN进行分类 学习目标 目标 知道tf.data.Dataset的API使用知道tf.feature_columnAPI使用知道tf.estimatorAPI使用应用 无 7.2.1 数据集介绍 对鸢尾花进行分类:概览 本文档中的示例程序构建并测试了一个模型,此模型根据鸢尾花的花…

《MFC编程》:MFC程序执行流程

《MFC编程》:MFC程序启动《MFC编程》:MFC程序启动入口函数执行流程CWinApp的成员视频链接《MFC编程》:MFC程序启动 入口函数 MFC程序的入口函数与win32程序一样,都是从WinMain入口。 但是MFC库已经实现了WinMain函数&#xff0…