3.10 (异常)使用类似与readTextFile.py 中异常处理的方法取代 makeTextFile.py 中对 os.path.exists()的调用,反之亦然。
makeTextFile.py
#!/usr/bin/env python
'makeTextFile.py -- create text file'
import os
ls = os.linesep
#get filename
fname = raw_input('Input the filename : ')
while True:
# check if this file lives
try:
fobj = open(fname, 'r')
except IOError, e:
print "***file open error : ", e
break
else:
# if os.path.exists(fname):
# print "ERROR: '%s' already exists" % fname
# break
# else:
print 'OK, you create a new file now and its named %s' % fname
#get file content (text) lines
all = []
print "\nEnter lines ('.' by itself to quit).\n"
#loop until user terminates input
while True:
entry = raw_input('> ')
if entry == '.':
break
else:
all.append(entry)
# write lines to file with proper line-ending
fobj = open(fname, 'w')
fobj.writelines(['%s%s' % (x, ls) for x in all])
fobj.close()
print 'DONE!'
break
#!/usr/bin/env python
'readTextFile.py -- read and display text file'
import os
# get filename
fname = raw_input('Enter filename : ')
print
# attempt to open file for reading
# try:
# fobj = open(fname, 'r')
# except IOError, e:
# print "***file open error:", e
# else:
if os.path.exists(fname):
# display contents to the screen
for eachLine in fobj:
print eachLine,
fobj.close()
else:
print 'No such files or directory!'
一点感想:
为什么我们要造轮子?
有可能os.path.exists()里面已经存在如何应对异常现象处理的情况,但是我们还是要造一个轮子出来,重新发明一个轮子来做同样一件事。是因为我们要处理程序中非正常的错误,比方说服务器忽然掉线什么的,在没有合适函数的情况下,还是自己造一个轮子出来吧。