学习处理文件;
学习错误处理;
学习异常;
学习模块json,能够保存用户数据
10.1 从文件中读取数据
可以一次性读取文件的全部内容,也可以每次一行的方式逐步读取
10.1.1 读取整个文件
with open('xxx') as file_object: #这里的xxx是文件名
contents = file_object.read()
print(contents.rstrip())
rstrip()方法可以删除右边;strip()可以删除左右两边
10.1.2 文件路径
一般讲数据文件存储在程序文件所在目录,或者存储在程序文件所在目录的文件夹内.
with open('text_files\filename.txt') as file_object: #这里的text_files就是程序文件所在目录的文件夹名
注意这里windows系统是\,linux和OS X中是/
10.1.3 逐行读取
filename = 'xxx' #将读取的文件名称存储在变量中
with open(filename) as file_object:
for line in file_object: #for循环
print(line.rstrip()) #删除左右两边的指定元素,这里是空格
10.1.4 创建一个包含文件各行内容的列表
open关键字,open()返回的文件对象只在with代码块内可用
with 关键字后:
lines = file_object.readlines()
for line in lines:
print(line.rstrip)
10.2 写入文件
10.2.1 写入空文件
读取模式 r
写入模式 w
附加模式 a
若省略模式实参,python将默认已只读模式打开文件
filename = ‘xxx’
with open(xxx, 'w') as file_object:
file_object.write('yyy')
如果要写入的文件不存在,函数open()会自动创建它;
另外以写入模式打开文件时若指定文件已经存在,puthon将在返回文件对象前清空该文件
10.2.2 写入多行
函数write()不会换行,需要加转行符\n
10.2.3 附加到文件
将'w'替换为'a'即可
10.3 异常
try-except-else代码块
即便出现异常,程序也将继续运行:显示你编写的友好错误信息,而不是traceback
10.3.1 处理ZeroDivisionError
try:
'可能引发错误的代码'
except ZeroDivisionError:
'提示出现该异常该怎么办的代码'
else:
'try的代码成功执行'
10.3.2 处理FileNotFoundError异常
with open(filename) as f_obj:
content = f_obj.read()
python无法读取不存在的文件.这个错误是open()函数导致的,因此
try语句要放在open()代码行之前
try:
with open(filename) as f_obj:
content = f_obj.read()
except FileNotFoundError:
'代码行'
10.3.3 分析文本
filename.split()
有些单词可能包含标点
10.3.4 pass语句
except FileNotFoundError:
pass
这种语句让错误发生时,不出现traceback,也不会有任何输出;
另外pass语句还充当了占位符
10.4 存储数据
使用模块json
10.4.1 json.dump()和json.load()
import json
numbers = [2, 3, 5, 8, 13]
filename = 'numbers.json' #通常使用.json的扩展名来指出数据存储为JSON格式
with open(filename, 'w') as f_obj: #写入模式打开文件
json.dump(numbers, f_obj) #函数json.dump()存储
import json
filename = 'numbers.json'
with open(filename) as f_obj:
numbers = json.load(f_obj) #json.load()函数加载存储在JSON中的信息
print(numbers)
10.4.2 保存和读取用户生成的数据
防止在程序停止运行时,用户的信息丢失
10.4.3 重构
改进代码:将代码划分为一系列完成具体工作的函数
网友评论