2020年8月6日
第十章 文件和异常
1.打开并读取文件
with open('pi_digits.txt')as file_object:
contents=file_object.read( )
print(contents.rstrip( ))
最后打印该文本文件时,会多出一个空行,因为read( )到达文件末尾时返回一个空字符串,而这个空字符串显示出来时就是一个空行。要删除末尾的空行,可在print语句中使用rstrip( )
2.文件路径
当简单文件名被传递给open( )时,Python将在当前执行的文件所在的目录中查找文件。
Python并不会在子文件夹中查找,需要提供文件路径
with open('text_files\filename.txt')as file_object:
绝对路径比相对路径更长,通过使用绝对路径,可读取系统任何地方的文件。
3.逐行读取
要以每行一次的方式检查文件,可对文件对象使用for循环
注意:print语句每输出一次会加上一个换行符
4.创建一个包含文件各行内容的列表,利用for循环打印列表中的各行,输出将与文件内容完全一致。
filename='pi_digits.txt'
with open(filename) as file_object:
lines=file_object.readlines( )
for line in lines:
print(line.rstrip( ))
5.写入空文件
调用open( )要提供两个实参,第一个实参是要打开的文件的名称,第二是模式实参
'w' 写入模式
'r' 读取模式
'a' 附加模式
'r+' 读取和写入文件的模式
如果写的文件不存在,函数open( )将自动创建它,如果指定的文件已经存在,Python将在返回文件对象前清空该文件。
filename='programming.txt'
with open(filename,'w') as file_object:
file_object.write("I love programming.")
6.函数write( )不会在你写入的文本末尾添加换行符,要每一句独占一行,要自带\n
7.附加到文件
使用附加模式打开文件,不会在返回文件对象前清空文件,如果指定的文件不存在,Python将为你自动创造一个文件。
8.异常
Python使用称为异常的特殊对象来管理程序执行期间发生的错误。每当错误发生,他都会创建一个异常对象。如果未处理异常,程序将停止,并返回一个traceback,其中包含相关异常的报告。
异常通常使用try-except代码块处理。
9.traceback的潜在风险
如果用户怀有恶意,他会通过traceback获悉你不希望他知道的信息。他将知道你的程序文件的名称,还将看到部分不能运行的代码。有时候,训练有素的攻击者可根据这些信息判断出可以对你的代码发起什么样的攻击。
10.try-except-else代码块
工作原理:Python尝试执行try代码块中的代码;只有可能引发异常的代码才需要放在try语句中。有一些仅在try代码块成功执行时才需要运行时的代码,这些代码应放在else代码块中。except代码块告诉Python,如果运行try代码块时发生了指定的异常,该怎么办。
预测可能发生错误的代码,能编写出健壮的程序,即使面临无效数据或缺少资源,也能继续运行,从而抵御无意的用户错误和恶意的袭击。
11.split( )方法
以空格为分隔符将字符串拆分成多个部分,并将这些部分都储存到一个列表中去。
可利用该方法分析文本的单词数目
12.在except处使用pass,将不会有任何输出。
pass语句还充当了占位符,提醒你在程序的某个地方什么也没有做,或许以后会做些什么。
13.存储数据
使用模块json来存储数据,使你能够将简单的Python数据转储到文件中,并在程序再次运行时加载该文件中的数据
14.json.dump( )函数
接受两个参数,要存储的数据,和可用于存储数据的文件对象
import json
numbers=[2,3,5,7,11,13]
filename='numbers.json'
with open(filename,'w') as f_obj:
json.dump(number,f_obj)
15.json.load( )函数
接受一个参数,可用于存储数据的文件对象
使用该函数加载存储在文件中的信息。
返回该文件的信息
16.重构
将代码划分为一系列完成具体工作的函数。