1.文件处理
文件就像一个仓库一样可以存储各式各样的数据类型供我们使用,根据文件的用途可以分为,数据库文件、图像文件、音频、视频、文本文件等。本节主要以文本文件的处理操作为例,。文本文件中存储的是常规字符串,由文本行组成,每行结尾通常由换行符“m”结尾。
对于文本文件来说,通常的操作流程为;
(1)打开文件创建对象;
(2)对该文件内容进行读取、写入、删除。修改等操作;
(3)关闭并保存文件
2.创建文件对
在python中内置了文件对象,通过open()函数就可以指定模式打开指定文件并创建文件对象,该函数的详细步骤如下;
open(file[,mode='r'[,buffering=-1],encoding[]])
open(file[, mode=’r’[, buffering=-1]],encoding=[])
(1)参数file指定要打开或者创建的文件名称,如果该文件不存在当前目录,则需要明确指出绝对路径。
(2)参数mode指定打开文件后的处理方式,其中包括,读模式、写模式、追加模式、二进制模式、文本模式、读写模式。
(3)参数buffering指定读写文件的缓冲模式,数值0表示不缓存,数值1表示使用行缓冲模式,大于1表示缓冲区的大小,默认值为1,二进制文件和非交互文本文件以固定大小块为缓冲单位。
(4)参数encoding指定对文本进行编码和解码的方式
3.文件的读
通常根据开发人员的目的对文件内容相应的操作,其中包括;文件的读取,写入,追加,二进制模式,文本模式,读写模式等。
(1)读取文件中的内容
对于一名开发人员,有时需要加载文本中的某行或者全部内容,此时就需用到文本的读取操作:
r:读模式(默认模式可以省略),如果文件不存在则抛出异常;
+:读,写模式(可与其他模式组合使用)
readable():测试文件是否可读;
可读返回True 不可读返回False
read([size]);从文件中读取size字符;如果省略则表示读取所有内容
readline():从文本中读取一行内容作为结果返回;
readlines():把文本文件中的每行文本作为一个字符串存入列表中,返回该列表;
利用for循环,读取文件中的内容;
4.文件写入
如果需要向文件中写入内容,在打开文件时就需要指定文件的打开模式为写模式,根据不同的开发需求选取不同的写入模式:
w:写入模式,如果文件已经存在,先清空文件内容;如果文件不存在,则创建文件。
x:写入模式,创建新文件,如果文件已经存在则抛出异常;
a:追加模式也是写入模式的一种,不覆盖文件的原始内容。
writable(s):测试文件是否可写
write(s) : 将字符串s的内容写入文件;
w:写入模式,如果文件已经存在,先清空文件内容;如果文件不存在,则创建文件。
x:写入模式,创建新文件,如果文件已经存在则抛出异常;
a:追加模式也是写入模式的一种,不覆盖文件的原始内容。
5.关闭文件对象
当对文件内容操作完以后,一定要关闭文件对象,f.close(),这样才能保证所做的任何修改都确实保存到了文件中。
文件操作一般都要遵循“文件打开->文件内容的读写->文件关闭”的基本流程,但是文件读写操作代码引发了异常,很难保证文件能够被正常关闭。此时可以使用上下文管理关键字with避免这个问题的1产生。关键字with能够自动管理资源,总能保证文件的正确关闭并且可以在代码执行结束后自动还原进入改代码块时的现场。with具体使用可以通过下面例子进行详细说明。
6.异常处理结构
对于每一种高级语言来说,异常处理结构不仅能够提高代码的健壮性,而且也提高了代码的容错性,从而不会因为使用者错误输入造成系统崩溃,也可以通过异常处理结构为使用者提供更加友好的错误提示。在python开发过程中引发程序异常错误的原因有很多中,较为常见的有:除0、下标越界等。
Python中提供了很多不同形式的异常处理结构,其基本利用思路都是:先尝试执行代码,再进行处理可能发生的错误。
try···except···结构
在python异常处理结构中try…except…结构使用最为频繁,其中try子句中代码块为可能引发异常的语句,except子句用来捕获相应的异常。也可以解释为,当try子句代码块执行异常并且被except子句捕获,则执行except子句的代码块。
学校在录入每科成绩时要求输入0-100的整型数值,而不接收其它类型的数值,如果输入不在0-100范围的值时给出提示。
8.try···except···else···结构
之前的例子我们是通过if语句判断学生数学成绩是否在0-100的范围,也可以通过try…except…else…结构进行编写。如果try代码的子句出现了异常且该异常被except所捕获则可以执行相应的异常处理代码,此时就不会执行else中的子句;如果try中的代码没有抛出异常,则执行执行else子句代码块。
学校在录入数学成绩时要求输入0-100的整型数值,而不接收其它类型的数值,如果输入不在0-100范围的值时给出提示。
9.try···except···finally···结构
在try…except…finally…结构中。无论try子代码块是否正常执行,finally子句中的代码块总是会得到执行。在日常开发过程中,通常用来做清理工作,用来释放try子句中申请的资源。
输入两个数值a,b进行除法运算,并输出最终结果。同时为了程序的鲁棒性,要求带有异常处理结构。