您的位置:首页 > 编程语言 > Python开发

【head First python】之文件与异常处理

2013-09-11 15:03 260 查看
【head First python】之文件与异常处理
上一章我们谈到如何处理嵌套列表中的数据,这一节将讲到如何处理来自文件中的数据及异常处理办法。

python是如何处理文件的?
Demo:

file = open('sketch.txt')#使用open函数打开文件并赋值给file
print(file.readline())#读文件第一行数据
print(file.readline())#读文件第二行数据
file.seek(0)#回到文件第一行
print(file.readline())#再读第一行
file.close()#关闭文件,使python不再调用


这里就拿附件中的文件做操作,下面是针对该文件逻辑特点写的代码

Demo:

import os
a = os.getcwd()
print(a)  #打印出当前工作目录
os.chdir('C:\\Users\\haohu\Desktop')#修改当前工作目录
a = os.getcwd()
print(a)  #再打印出当前工作目录,文件要放在工作目录中!
if os.path.exists('sketch.txt'):#判断文件是否存在
f = open('sketch.txt')
for i in f:
if i.find(':') != -1:#判断是否具备分割条件,这里为是否有:做为条件
(role,  line) = i.split(':',1)#使用split函数并且将:前后分别赋值,,且只切割1个:
print(role,end='')#打印:前的内容
print('|||',end='')#万恶的分割线
print(line,end='')#打印:后的内容
f.close()
else:
print('未发现sketch.txt文件')
从上面例子可以看到除了open还多了很多处理该文件的逻辑条件,如split,find,os.path.exists等,看起来是否很复杂,如果该文件中的数据更多,或许需要添加更多的代码去处理这些特定逻辑,否则就等着debug!!

现在,我们就可以使用try/except的方式来处理这些不确定的逻辑条件!
Demo:
try:
可能藏有错误逻辑的代码
except:
自定义的恢复错误代码
看起来是不是很酷?让我们改进一下代码!
Demo:
import os
a = os.getcwd()
print(a)  #打印出当前工作目录
os.chdir('C:\\Users\\haohu\Desktop')#修改当前工作目录
a = os.getcwd()
print(a)  #再打印出当前工作目录,文件要放在工作目录中!
try:
f = open('sketch.txt')
for i in f:
try:
(role,  line) = i.split(':',1)#使用split函数并且将:前后分别赋值,,且只切割1个:
print(role,end='')#打印:前的内容
print('|||',end='')#万恶的分割线
print(line,end='')#打印:后的内容
except ValueError: #错误类型为Value
print('error')
f.close()
except IOError: #错误类型为IO
print('未发现sketch.txt文件')
是不是很棒?不仅不需要在代码中添加不是必要的处理逻辑与代码,而且可以看到使用try/except可以自己定义错误类型与错误提示代码,%100的调试利器!
小结:
一:open()函数可以打开一个文件,并创建一个迭代器从文件读取数据,一次读取一个数据行。
二:readline()方法从一个打开的文件读取一行数据。
三:seek()方法可以用来将文件"退回"至起始位置

四:close()方法关闭open()打开的文件
五:split()方法可以将一个字符串根据相应的条件分解为几段
六:ValueError错误类型为数据不符合期望的格式时出现
七:IOError为无法正常访问文件时出现
八:find()方法会在一个字符串中查找一个指定的项,如果查不到则返回-1
九:可以在except:下面写pass,大概等同null或空,也就是当错误发生时忽略,什么也不做!

本文出自 “盛夏光年” 博客,请务必保留此出处http://mayday.blog.51cto.com/5166623/1294305
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: