【Python语言速回顾】——异常文件操作

news2025/1/4 15:20:43

目录

一、异常

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')

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

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

相关文章

[C++随想录] 二叉搜索树

搜素二叉树 二叉搜索树的使用二叉搜索树的模拟实现(K)整体结构循环版本递归版本 二叉搜索树的应用源码(kv) 二叉搜索树的使用 二叉搜索树 相较于 普通的二叉树来说: 根节点的左子树的所有键值都 小于 根节点, 根节点的右子树的所有键值 大于 根节点根节点的 左右子树 都是 二…

mac上mongodb 以及可视化工具 下载以及安装

简介 1. 下载 官网上的下载地址藏得非常深&#xff0c;不花老半天 根本找不到 下载地址 https://www.mongodb.com/try/download/community 目前最新社区版本7.0.2 下载链接 mac intel芯片 &#xff1a; https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-7.0.2.tgz ma…

地面领域的“大疆”?通用足式机器人公司逐际动力获近2亿融资!

原创 | 文 BFT机器人 近日&#xff0c;通用足式机器人公司逐际动力完成天使轮和Pre-A轮融资&#xff0c;总金额近2亿元。逐际动力是一家通用足式机器人公司&#xff0c;成立于2022年&#xff0c;全球总部位于中国深圳&#xff0c;专注于运动智能&#xff08;Motion Intelligen…

html内连框架

src:引用页面地址 name&#xff1a;框架标识名称 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body> <!--iframe src&#xff1a;地址 w-h&#xff…

鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统项目背景

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;公司对内部工程管…

双十一必买好物,这四款好物你值得拥有

随着科技的不断发展&#xff0c;智能家电已经成为我们生活中不可或缺的一部分。在双十一期间&#xff0c;各大品牌都会推出各种优惠活动&#xff0c;以更优惠的价格购买到心仪的智能家电。比如智能超声波清洗机&#xff0c;智能门锁&#xff0c;它们不仅提高了我们的生活质量&a…

Vue2基础知识(五)插槽

&#x1f48c; 所属专栏&#xff1a;【Vue2】&#x1f600; 作 者&#xff1a;长安不及十里&#x1f4bb;工作&#xff1a;目前从事电力行业开发&#x1f308;目标&#xff1a;全栈开发&#x1f680; 个人简介&#xff1a;一个正在努力学技术的Java工程师&#xff0c;专注基础和…

【C++项目】高并发内存池第二讲中心缓存CentralCache框架+核心实现

CentralCache 1.框架介绍2.核心功能3.核心函数实现介绍3.1SpanSpanList介绍3.2CentralCache.h3.3CentralCache.cpp3.4TreadCache申请内存函数介绍3.5慢反馈算法 1.框架介绍 回顾一下ThreadCache的设计&#xff1a; 如图所示&#xff0c;ThreadCache设计是一个哈希桶结构&…

万界星空科技/免费MES系统/开源MES/免费追溯管理

开源系统概述&#xff1a; 万界星空科技免费MES、开源MES、商业开源MES、市面上最好的开源MES、MES源代码、免费MES、免费智能制造系统、免费排产系统、免费排班系统、免费质检系统、免费生产计划系统、免费仓库管理系统、免费出入库管理系统、免费可视化数字大屏。 万界星空…

CMake学习(一):使用CMake构建一个简单的C++项目

文章目录 一. 构建一个简单的项目二. 构建过程1. 创建程序源文件2. 编写CMakeList.txt文件3. 构建项目并编译源代码 附件 一. 构建一个简单的项目 最基本的CMake项目是从单个源代码文件构建的可执行文件。对于像这样的简单项目&#xff0c;只需要一个包含三个命令的CMakeLists…

QT的Qporcess功能的使用

具体实现代码如下&#xff1a; #include <QProgressBar>//必须要包含的头文件 #include <QProcess>// 创建一个QProgressBar对象QProgressBar *progressBar new QProgressBar(this);QProcess *proces;process_shownew process;// 设置进度条的最小值和最大值prog…

YOLOv5论文作图教程(1)— 软件介绍及下载安装(包括软件包+下载安装详细步骤)

前言:Hello大家好,我是小哥谈。在学习YOLOv5算法的过程中,很多同学都有发表论文的需求。作为文章内容的支撑,图表是最直接的整合数据的工具,能够更清晰地反映出研究对象的结果、流程或趋势。在发表论文的时候,审稿人除了关注论文的内容和排版外,也会审核图表是否清晰美观…

按摩 推拿上门服务小程序源码 家政上门服务系统源码

按摩 推拿上门服务小程序源码 家政上门服务系统源码 上门服务系统是一款基于互联网和移动应用的高端家政服务预订平台&#xff0c;它集成了用户、服务员、客户三方的需求于一体&#xff0c;为广大市民提供方便、高效、安全、舒适的家居服务体验&#xff0c;让你在家当皇帝&…

征战EDU证书站

1.前言&#xff1a; 挖了一段时间EDU老破小的站&#xff0c;也该拿证书站下手了。下手的第一个目标&#xff0c;那必然是漏洞排行榜第一的某交大&#xff01;&#xff01;&#xff01; 2.信息搜集 想快速挖到漏洞&#xff0c;必须信息搜集全面。如果信息搜集不到位不全面&…

YOLO V8语义分割模型部署

目录 1 配置pytorch环境 2 配置yolo环境 3 测试yoloV8的语义分割模型 1 配置pytorch环境 我的电脑为Y9000P 4090&#xff0c;英伟达显卡驱动版本为525.105.17&#xff0c;驱动显示最高的cuda版本号为12.0&#xff0c;cuda版本为11.6&#xff0c;cudnn版本号为8.5.0。Anaconda…

如何将音频与视频分离

您一定经历过这样的情况&#xff1a;当你非常喜欢视频中的背景音乐时&#xff0c;希望将音频从视频中分离出来&#xff0c;以便你可以在音乐播放器中收听音乐。有没有一种有效的方法可以帮助您快速从视频中提取音频呢&#xff1f;当然是有的啦&#xff0c;在下面的文章中&#…

Windows命令行窗口修改字体方法

问题&#xff1a;嫌弃原来的字体太丑&#xff0c;不好看&#xff0c;影响心情 长得丑还天天在我眼前晃悠&#xff1a; 改一改字体 输入命令&#xff1a; chcp 437 把字体换成consola 学习的心情都变好了

美国亚马逊UL60335认证怎么办理,费用是多少

UL60335认证是由美国安全实验室&#xff08;UnderwritersLaboratories&#xff09;颁发的&#xff0c;它对各类家用电器进行严格的测试和认证&#xff0c;确保其在正常使用情况下不会给消费者带来任何伤害。 本文将从不同的角度来叙述亚马逊UL60335认证的重要性和成败因素。 1.…

Kafka快速入门(最新版3.6.0)

文章目录 一、初识MQ1.1 什么是MQ1.2 同步和异步通讯1.1.1 同步通讯1.1.2 异步通讯 1.3 技术对比1.4 MQ的两种模式 二、初识Kafka2.1 Kafka的使用场景2.2 Kafka基本概念2.3 Topic与Partition 三、Kafka基本使用3.1 部署前的准备3.2 启动kafka服务器3.3 Kafka核心概念之Topic3.4…

laravel队列

laravel redis队列 1、创建job队列任务 php artisan make:job StoreUser执行上述命令后&#xff0c;会生成app/Jobs/StoreUser.php文件&#xff0c;编辑文件内容如下&#xff1a; <?phpnamespace App\Jobs;use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queu…