#!/usr/bin/python
# -*- coding: UTF-8 -*-
#This is note foe exception
try:
code #需要判断是否会抛出异常的代码,如果没有异常处理,python会直接停止执行程序
except: #这里会捕捉到上面代码中的异常,并根据异常抛出异常处理信息
#except ExceptionName,args: #同时也可以接受异常名称和参数,针对不同形式的异常做处理
code #这里执行异常处理的相关代码,打印输出等
else: #如果没有异常则执行else
code #try部分被正常执行后执行的代码
finally:
code #退出try语句块总会执行的程序
#函数中做异常检测
def try_exception(num):
try:
return int(num)
except ValueError,arg:
print arg,"is not a number"
else:
print "this is a number inputs"
try_exception('xxx')
#输出异常值
Invalide literal for int() with base 10: 'xxx' is not a number
Python 是使用 fopen/fread/fwrite 这系列函数来读写文件的,经查阅 MSDN:http://msdn.microsoft.com/en-us/library/yeby3zcb.aspx 经查阅, 里面有一句对写入后读取操作的一句表述:When you switch from writing to reading, you must use an intervening call to either fflush or to a file positioning function. 这句话给出了解决方法, 也就是write后执行read方法我们需要先执行flush()方法或指定一个文件读取为止。
981Python 异常处理
异常处理代码执行说明:
980Python 异常处理
0 作为除数:
979Python File 方法
Python 在 Windows 环境下(在 linux 环境下不存在此问题),在 write 后,直接 read, 会出现乱码问题。如下:
运行结果会出现一堆乱码,我们会初步判断为编码问题, 但其实并不是编码问题, 而是 EOF 的问题,也就是指针的位置问题,当我们以 w+ 开启文件读写模式的时候,由于是 w,所以文件会被清空,也就是文件为空,初始状态指针为 0 ,也就是初始即为 EOF 位置。
当我们写入字符串 www.runboon.com 后,指针的位置为 15,文件在缓存中的的内容为 www.runboon.com[EOF],指针的最后位置为 15, 所以直接 open 的时候会默认跳过 15,直到读取到了前一个 EOF 为止,所以你会得到缓存中的一堆乱码。
Python 是使用 fopen/fread/fwrite 这系列函数来读写文件的,经查阅 MSDN:http://msdn.microsoft.com/en-us/library/yeby3zcb.aspx 经查阅, 里面有一句对写入后读取操作的一句表述:When you switch from writing to reading, you must use an intervening call to either fflush or to a file positioning function. 这句话给出了解决方法, 也就是write后执行read方法我们需要先执行flush()方法或指定一个文件读取为止。
改进以后的代码如下:
读取乱码问题完美解决。
978Python File 方法
为了保证无论是否出错都能正确地关闭文件,我们可以使用 try ... finally 来实现:
但是每次都这么写实在太繁琐,所以,Python 引入了 with 语句来自动帮我们调用 close() 方法:
这和前面的 try ... finally 是一样的,但是代码更佳简洁,并且不必调用 f.close() 方法。
977Python File 方法
在 write 内容后,直接 read 文件输出会为空,是因为指针已经在内容末尾。
两种解决方式: 其一,先 close 文件,open 后再读取,其二,可以设置指针回到文件最初后再 read