Python3学习 十二、文件和异常

一、从文件中读取和写入数据

指导思想:对文件进行相关操作,这里的指导思想是:打开一个指定的文件并将其作为一个对象,对对象进行一系列操作,如读取、写入、添加…
1、读取整个文件
(1)打开指定的文件
这里使用的是语句为open()语句,open语句有两种形式,单参数和双参数:
Python3学习 十二、文件和异常_第1张图片
需要注意的是,当以w模式打开文件时,如果指定的文件已经存在,Python将在返回文件对象时清空该文件。 而通常为文件添加内容使用的是a附加模式。python只能将字符串写入文本文件,若要将数值写入文本文件,必须使用函数str()将其转换为字符串模式。

此外,文件路径也是需要注意的一点,通常文件路径只需给出文件名即可,但这样做的前提是该文件与当前python程序在同一文件夹中。若不在同一文件夹中,需给出文件在计算机中的具体路径,其中Windows系统给出具体路径的方式需要注意,因为Windows中用的是"“来分隔各级文件夹,而”"在python中又是转义符,所以要在文件路径开头前的单引号前加上r,使其以原始字符串的形式指定路径。

通常情况下,在open语句前还会有一个关键字with,关键字with使python在不需要访问文件后将其关闭。
因为程序中我们调用了open(),但没有调用close(),手动管理内存过于麻烦而且容易出错,如果我们添加了with就可以避免这一流程。

(2)读取内容
读取整个文件内容,将其存储到一个字符串中,这里用到的方法为read(),文件对象调用此方法会返回一个储存了文件内容的长字符串。使用格式为:
contents=文件对象名.read()
逐行读取文件内容,可对文件对象使用for循环。使用格式为:

 for line in 文件对象名:
	 do something

这里的line即存储着文件每行内容的字符串表示。

此外还可以读取文件各行内容创建一个列表,这里需要用到的方法为readlines(),文件对象调用该方法后将返回一个存储了文件各行内容的列表,列表元素即为文件中的各行内容。此外,还有一个方法为readline()用于读取文本中的每一行内容,每读取一行,文件就定位到当前行末尾,若要想重头开始读取每一行就需要用到下面的seek(0),将文件定位到position 0.
并且,python将文件中所有文本都解读为字符串,如果需要使用文本中的数值,需要使用int()、float()函数将其转化为数值。

(3)写入内容
由上述内容可以知晓,要想向文件中写入内容,首先要选择打开模式。
1)写入空文件:这里需要选择的打开模式即为’w’,即:

 with open('文件路径','w') as 文件对象名:
	 文件对象名.write("需要写入的内容")
	 do something…
这时只是将内容按一行输入进去,若要换行输入需要在文件中添加换行符。

2)为文件添加(附加)内容:这里需要选择的模式为’a’,即:

 with open('文件路径','a') as 文件对象名:
	 文件对象名.write("需要写入的内容")
	 do something…
这时只是将内容按一行输入进去,若要换行输入需要在文件中添加换行符。

3)如果是要对文件内容进行修改,既不是写入空文件,也不是为文件添加内容,这就需要选择’r+'模式,示例如下:

with open('test.txt', "r+") as f:
	read_data = f.read()
	f.seek(0)
	f.truncate()   #清空文件
	f.write(read_data.replace('apple', 'android'))

这里用到的f.seek(0),是将文件定位到position 0,否则文件是定位到文件最后,truncate()就是从这里删除,所有就不会产生作用。

2、分析文本
有时我们需要对文本文件的内容进行分析,以获取我们需要的信息。
这里可能用到的方法为split(),使用样例为:
字符串对象.split(‘分隔符’,num) #其中第二个参数为分隔符出现的次数,可以省略
该方法返回一个以分隔符隔开的字符串列表,其中分隔符将会消失,列表长度为num+1,如果第二个参数省去则长度为可分隔的最大长度。

3、存储数据
存储数据,也是程序的一项重要功能,通常我们使用json模块来存储数据,json可是最初是为JavaScript开发的,但随后成为了一种通用格式,被多种语言所采用,python中主要用于存储字典、列表、元组。
这里经常使用的是json模块中的dump()和load()函数,使用示例如下:

 with open('文件路径','w') as file_obj:
	 json.dump(数据对象,file_obj)  #将数据存储进了文件对象中,注意open的模式选择
 with open('文件') as file_obj:
	 数据对象=json.load(file_obj)   #将文件对象中的数据返回给数据对象,实现读取

二、异常
1、什么是异常?
当程序语句发生错误,或程序无法运行时(如除法的分母为0),就会产生异常,如果不对异常进行处理,程序就会崩溃。

2、如何处理异常?
这里用到的为try-except代码块,使用形式为:

 try:
	 可能出错的代码块。
 except  指定类型错误:
	 当try代码块中的内容发生异常时需要执行的代码块。
 else:try代码块未出错时运行的代码块。

常见的异常有:除法分母为零(ZeroDivisionError),文件不存在或文件路径错误(FileNotFoundError)等,错误类型也可以省略不写。

三、重构
将程序代码功能细化,使得程序代码更清晰、容易理解、容易扩展。

Python3学习 十二、文件和异常_第2张图片

你可能感兴趣的:(Python笔记——入门篇,python)