【Python语言速回顾】——异常文件操作
目录
一、异常
1、检测异常try语句
2、抛出异常
3、异常处理流程
二、文件操作
1、打开文件
①文件模式acess_mode
②文件缓冲区
2、基本的文件方法
①读和写、关闭文件
②读取行
③文件重命名
④删除文件(系统中已存在的文件)
3、基本的目录方法
①创建与删除目录(文件夹)
②显示当前工作目录
③改变当前工作目录
一、异常
某些代码错误不是致命的,不会导致程序崩溃,如逻辑错误、用户输入不合法等。这些可通过python提供的异常机制,在错误出现时,以程序内部的方式消化解决。
1、检测异常try语句
任何出现在try语句范围内的异常都可以被检测到,4种模式:try-except语句、try-except-finally语句、try-except-else语句、try(with)-except语句。
①try-except语句
语法格式(语句块为检测范围,except后跟异常名字,as reason输出异常的具体内容):
try:[语句块]
except Exception[as reason]: 出现异常(exception)后的处理代码
示例1:
try:f = open('test.txt')print(f.read())f.close()
except OSError as reason:print("文件出现错误的原因是:" + str(reason))
运行结果:
文件出现错误的原因是:[Errno 2] No such file or directory: 'test.txt'
注:一个try还可以与多个except搭配,对我们感兴趣的异常进行检测处理:OSError、TypeError
except OSError as reason:...
except TypeError as reason:...
若对多个异常统一进行处理,可写为:
except (OSError,TypeErro):
②try-finally语句
语法格式:
try:[语句块]
except Exception[as reason]: 出现异常(exception)后的处理代码
finally:无论如何一定执行的代码
示例:如在示例1后加入
finally:f.close()
③try-except-else语句
语法格式:
try:[语句块]
except Exception[as reason]: 出现异常(exception)后的处理代码
else:没有异常时被执行的代码
④try(with)-except语句
语法格式:
try:with <语句> as name:[语句块]
except OSError as reason:出现异常(exception)后的处理代码
在语法中可以看出,with语句出现在try语句块中,一般情况下不需要再写finally语句块了。使用with语句最大的好处是减少代码量,例如当我们对文件操作时忘记了关闭文件操作,则with语句会自动执行关闭文件操作。示例代码如下:
try:with open('D:\data.txt',"w") as f:f.write("测试with语句功能!写入这句话")for each_line in f:print(each_line)
except OSError as reason:print("文件出现错误的原因是:" + str(reason))
2、抛出异常
主动抛出异常,使用关键字raise,语法格式:
raise Exception(defineexceptname)
其中Exception为异常名称如OSError、TypeError、ZeroDivisionError等。defineexceptname为自定义的异常描述。
>>> raise ZeroDivisionError('不能除以0')
Traceback (most recent call last):File "<pyshell#1>", line 1, in <module>raise ZeroDivisionError('不能除以0')
ZeroDivisionError: 不能除以0
3、异常处理流程
此处略,可根据需要自行学习!!
二、文件操作
大多数程序遵循输入、处理、输出的模型,但我们不满足input、print,再进阶就涉及到对文件的处理!
1、打开文件
打开文件使用内置函数open(),创建file对象,只有存在file对象后用户才能对文件进行相应操作。语法格式:
file object = open(file_name,access_mode,buffering)
file_name:必选参数,访问文件的字符串值(路径)
access_mode:可选参数,访问文件的模式,默认是只读(‘r’)
buffering:可选参数,设置文件缓冲区,默认缓冲区大小是4096字节。
以默认只读方式打开一个文件(只读模式时,文件路径必须完整):
f = open("D:\data.txt")
①文件模式acess_mode
r:只读方式打开文件,默认模式。
rb:只读方式、二进制格式打开文件。
r+:打开一个文件,用于读写(可理解为rw)。
w:打开一个文件,用于写入。如果文件存在,内部信息会被删除,从头编辑;若文件不存在则创建新文件,从头写入。
wb:以二进制打开一个文件,用于写入。一般用于非文本文件
w+:打开一个文件,用于读写(可理解为wr)。
wb+:以二进制打开一个文件,用于读写。一般用于非文本文件
a:打开一个文件,用于追加。如果文件存在,接着内部信息写入,从头编辑;若文件不存在则创建新文件,从头写入。
ab:以二进制打开一个文件,用于追加。
a+:打开一个文件,用于读写。
ab+:以二进制打开一个文件,用于读写。
(a类比w,区别在于a写时不会删除原信息,而是跟着原信息追加)
②文件缓冲区
python文件缓冲区,一般分为3种模式:全缓冲、行缓冲、无缓冲。
全缓冲:默认模式,空间大小为4096字节。前4069个字节信息会写在缓冲区,当第4097个字节写入时,系统会把先前的4096个字节通过系统调用写入文件。可以指定参数Buffering = n自定义缓冲区大小。
行缓冲:Buffering = 1,系统每遇到一个换行符('\n')时才进行系统调用,将缓冲区的信息写入文件。
无缓冲:Buffering = 0,将系统产生的信息实时写入文件。
2、基本的文件方法
①读和写、关闭文件
读:str = fileobject.read(size)
其中size是指定读取的字节数,若没指定默认读取全部信息,返回值为从文件中读到的字符串。
>>> f = open('D:\\data.txt','r')
>>> str_test = f.read()
>>> print(str_test)
测试with语句功能!写入这句话
>>> f.close()
写:fileobject.write(string)
>>> f = open('D:\\data.txt','w')
>>> f.write("这是一个写测试!\n")
9 #返回值是写入字符串的个数(\n也算)
>>> f.close()
②读取行
str = fileobject.readline(size):
读取整行,包括\n字符,size也是可选参数
fileobject.readline():
读取所有行,直到结束符EOF,并返回列表(包括所有行信息),常结合for ...in...结构处理。
③文件重命名
语法格式:
import os
os.rename(current_filename,new_filename)
示例:
>>> import os
>>> os.rename('D:\\data.txt','D:\\newdata.txt')
④删除文件(系统中已存在的文件)
语法格式:
import os
os.remove(filename)
3、基本的目录方法
①创建与删除目录(文件夹)
os.mkdir('newdir')
os.rmdir('dirname')
示例:
>>> import os
>>> os.mkdir('D:\\testdir')
>>> os.rmdir('D:\\testdir')
②显示当前工作目录
os.getcwd()
示例:
>>> os.getcwd()
'D:\\python3.6.6'
③改变当前工作目录
os.chdir('newdir')

相关文章:
【Python语言速回顾】——异常文件操作
目录 一、异常 1、检测异常try语句 2、抛出异常 3、异常处理流程 二、文件操作 1、打开文件 ①文件模式acess_mode ②文件缓冲区 2、基本的文件方法 ①读和写、关闭文件 ②读取行 ③文件重命名 ④删除文件(系统中已存在的文件) 3、基本的目…...
SAP POorPI RFC接口字段调整后需要的操作-针对SP24及以后的PO系统
文章目录 问题描述解决办法 问题描述 在SAP系统的RFC接口结构中添加了字段,RFC也重新引用到了PO系统,Cache和CommunicationChannel都刷新或启停了,但是新增的字段在调用接口的时候数据进不到SAP系统,SAP系统内的值也出不来。经过…...
【ArcGIS模型构建器】03:多个shp批量按属性分割(多个县区批量提取乡镇)
文章目录 一、数据预览二、模型构建三、保存模型一、数据预览 加载实验数据: 本试验实现将两个县区的数据分割为乡镇数据。 二、模型构建 1. 添加数据文件夹 将县区数据所在的根目录文件夹拖进模型。 2. 添加要素类迭代器 插入→迭代器→要素类。 用连接工具,将数据文件…...
JavaScript中JSON和Bom对象模型
JSON JSON是一种轻量级的数据交换格式 简洁和清晰的层次结构使得JSON成为理想的数据交换语言 易于人们解析和生成,并有效的提升网络传输效率 javaScript一切皆为对象,任何js支持的对象都可以使用JSON来表示 格式: 对象都用[] 数组都用{}…...
Ubuntu下载、安装QGIS软件的方法
本文介绍在Linux操作系统Ubuntu版本中,通过命令行的方式,配置QGIS软件的方法。 在Ubuntu等Linux系统中,可以对空间信息加以可视化的遥感、GIS软件很少,比如ArcGIS下属的ArcMap就没有对应的Linux版本(虽然有ArcGIS Serv…...
spring sharding JDBC 动态调整数据库连接
spring sharding JDBC 动态调整数据库连接 通过重写ShardingSphereDataSource类来实现 代码 package org.apache.shardingsphere.driver.jdbc.core.datasource;import com.alibaba.druid.pool.DruidDataSource; import lombok.extern.slf4j.Slf4j; import org.apache.shardi…...
解决CondaHTTPError HTTP 000 CONNECTION FAILED for url解决方法
解决CondaHTTPError: HTTP 000 CONNECTION FAILED for url解决方法 问题:使用conda install命令安装包提示CondaHTTPError: HTTP 000 CONNECTION FAILED for url 分析:网络连接问题,大概率是网速不行或者源没有换 解决方案:修改国…...
10 创建型模式-原型模式
引言: 创建对象的五种方式: 通过new关键字通过Class类的newInstance()方法通过Constructor类的newInstance()方法利用Clone方法反序列化 Clone方法: 其实现方式正是通过调用 Object 类的 clone() 方法来完成。 protected native Object cl…...
MSQL系列(七) Mysql实战-SQL语句Join,exists,in的区别
Mysql实战-SQL语句Join,exists,in的区别 前面我们讲解了索引的存储结构,BTree的索引结构,以及索引最左侧匹配原则及讲解一下常用的SQL语句的优化建议,今天我们来详细讲解一下 我们经常使用的 join, exist&…...
最新壁纸自动采集系统网站PHP源码/360壁纸官方数据接口采集/ZHEYI采集源码
源码介绍: 最新壁纸自动采集系统网站PHP源码,它是ZHEYI自动采集源码,能够在360壁纸官方数据接口采集。很好用的壁纸网站源码分享,仅供学习,请勿商用。 ZHEYI自动采集壁纸PHP源码,能全自动采集高清壁纸网源…...
Redis在分布式场景下的应用
分布式缓存 缓存的基本作用是在高并发场景下对应服务的保护缓冲 – 基于Redis集群解决单机Redis存在的问题 单机的Redis存在四大问题: redis由于高强度性能采用内存 但是意味着丢失的风险单结点redis并发能力有限分布式服务中数据过多 依赖内存的redis 明显单机不…...
2316. 统计无向图中无法互相到达点对数
2316. 统计无向图中无法互相到达点对数 难度: 中等 来源: 每日一题 2023.10.21 给你一个整数 n ,表示一张 无向图 中有 n 个节点,编号为 0 到 n - 1 。同时给你一个二维整数数组 edges ,其中 edges[i] [ai, bi] 表示节点 ai 和 bi 之间…...
Selenium定向爬取海量精美图片及搜索引擎杂谈
我自认为这是自己写过博客中一篇比较优秀的文章,同时也是在深夜凌晨2点满怀着激情和愉悦之心完成的。首先通过这篇文章,你能学到以下几点: 1.可以了解Python简单爬取图片的一些思路和方法 2.学习Selenium自动、测试分析动态网页和正则表达式的区别和共同点 …...
面试题—JAVA基础①
文章目录 1.Java面向对象有哪些特征?2.ArrayList和LinkedList有什么区别?3.Java接口和抽象类有哪些区别?4.hashcode和equals如何使用?5.try-catch6.局部变量和实例变量7.String、StringBuffer、StringBuilder 的区别?8…...
naive-ui的n-data-table标签奇特bug记录
具体参考之前的博文:vueday02——使用naive-ui做一个ACM看榜-CSDN博客 具体代码在这里面 原因:在本地运行的时候,datatable里面使用列表渲染成字符串前端设置样式进行转换,但是在正式部署的时候,这个组件没有将其自动…...
微信小程序OA会议系统个人中心授权登入
在我们的完成微信登入授权之前,首先我们要完成我们前面所写的代码,如果有不会的大家可以去看以下我发的前面几个文章链接我发下面了,各位加油! 微信小程序OA会议系统数据交互-CSDN博客 微信小程序会议OA系统其他页面-CSDN博客 …...
Git(一)Windows下安装及使用Git Bash
目录 一、简介1.1 什么是Git?1.2 Git 的主要特点1.3 什么是 Git Bash? 二、下载三、安装3.1 同意协议3.2 选择安装位置3.3 其他配置(【Next】 即可)3.4 安装完毕3.5 打开 Git Bash 官网地址: https://www.git-scm.com/…...
[AUTOSAR][诊断管理][ECU][$19] 读取ECU的DTC故障信息
一、简介 在车载诊断中常用的诊断协议有ISO 14229等,在协议中主要定义了诊断请求、诊断响应的报文格式及ECU该如何处理诊断请求的应用。其中ISO 14229系列标准协议定义了用于行业内诊断通信的需求规范,也就是UDS。UDS主要应用于OSI七层模型的第七层——…...
前端精度问题 (id 返回的和传给后端的不一致问题)
eg: 后端返回 id 10976458979374929 前端获取到的: 10976458979374928 原因: js 中 Number类型范围-2^53 1 到 2^53 - 1 Number.isSafeInteger()用来判断一个整数是否落在这个范围之内。 java中 Long 类型的取值范围是-2^63 1 到 2^63 - 1, 比JavaScript中大很多࿰…...
WPF Material Design UI框架
前言 Material Design in xaml 是开源免费的ui框架,工控软件主打的就是简单界面。 以下简称MD 相关资源 MaterialDesignInXamlToolkit Github 地址 MD 快速启动 MD 案例压缩包 MD 框架使用 启动环境配置 安装Nuget包 App.xaml 配置 <Application x:Class&qu…...
某大型园区服务集团薪酬体系与总额管控优化项目成功案例纪实
——对标市场、分类施策,构建支撑国际化转型的薪酬激励新机制【客户行业】园区服务;物业管理;文旅服务;国有企业【问题类型】薪酬体系改革;薪酬总额管控【客户背景】某大型园区服务集团隶属于某大型央企,位…...
OpenClaw模型量化指南:压缩Qwen2.5-VL-7B提升本地运行效率
OpenClaw模型量化指南:压缩Qwen2.5-VL-7B提升本地运行效率 1. 为什么需要量化多模态大模型 当我第一次在本地MacBook Pro上尝试运行Qwen2.5-VL-7B时,风扇立刻开始狂转,16GB内存几乎被吃满,模型加载就花了近3分钟。这种体验让我意…...
MySQL触发器可以修改当前行数据吗_MySQL触发器修改字段值
BEFORE触发器可安全修改NEW字段值,AFTER中修改无效;禁止在触发器内UPDATE本表以防递归;INSERT中不可依赖NEW.id做逻辑;赋值需注意类型、长度及约束。BEFORE 触发器里能直接改 NEW 字段值可以,而且这是唯一安全修改当前…...
从付费软件到自主开发:我用AI和FFmpeg实现了一个录屏工具杖
我为什么会发出这个疑问呢?是因为我研究Web开发中的一个问题时,HTTP请求体在 Filter(过滤器)处被读取了之后,在 Controller(控制层)就读不到值了,使用 RequestBody 的时候。 无论是字…...
某手热门短剧逆向AI直接秒
地址:aHR0cHM6Ly93d3cua3VhaXNob3UuY29tL3NlYXJjaC8lRTclODMlQUQlRTklOTclQTglRTclOUYlQUQlRTUlODklQTc一、为什么要做这个? 你是不是想自动获取快手的搜索结果,却发现直接调用API会被“风控”拦截?别担心,这是因为快手用了加密参…...
如何用G-Helper解决华硕笔记本性能控制臃肿问题
如何用G-Helper解决华硕笔记本性能控制臃肿问题 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar, and other mod…...
2025届学术党必备的十大AI科研平台横评
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 人工智能本领在学术写作范畴的运用越来越普遍,它的关键价值是协助科研者达成文献…...
中国如何用特高压技术破解“能源不可能三角”?
以前我总以为,能源这事儿就是个死结:想要便宜就不能清洁,想要稳定就得烧煤,想要环保就得忍受高价。直到我了解了中国的特高压技术,才明白“能源不可能三角”真的能被打破。先说说这技术有多牛。1100千伏准东到皖南工程…...
揭秘书匠策AI:课程论文写作的“智慧魔法棒”
在学术的奇妙旅程中,课程论文宛如一座座等待攀登的小山峰,既充满挑战,又蕴含着成长的机遇。对于众多初涉学术领域的学生而言,从构思选题到搭建框架,再到填充内容与精心打磨,每一步都可能伴随着困惑与迷茫。…...
G-Helper技术架构深度解析:华硕笔记本底层硬件控制实现机制
G-Helper技术架构深度解析:华硕笔记本底层硬件控制实现机制 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Stri…...
