《Python核心编程》第二版第三章答案
本人python新手,答案自己做的,如果有问题,欢迎大家评论和讨论!
更新会在本随笔中直接更新。
我在Windows使用python版本是2.7.0
3–10. 异常。使用类似readTextFile.py 中异常处理的方法取代 readTextFile.py makeTextFile.py 中对os.path.exists() 的调用。反过来, 用os.path.exists() 取代readTextFile.py 中的异常处理方法。
我的答案;
makeTextFile.py
1 ''' 2 @auther:Feng Xu 3 ''' 4 'makeTextFile.py -- create text file' 5 6 import os 7 ls = os.linesep 8 9 #get file name 10 while True: 11 fname = raw_input('Input your filename:') 12 #利用读文件来检查fname文件是否存在,如果存在打印错误信息,关闭文件,继续循环;不存在直接异常break退出while循环 13 try: 14 fobj = open(fname, 'r') 15 print "***Error: %s already exists" % fname 16 except IOError, e: 17 break 18 else: 19 fobj.close() 20 21 all = [] 22 print "\nEnter lines('.' by itself to quit).\n" 23 24 # loop until user terminates input 25 while True: 26 entry = raw_input('-->') 27 if entry == '.': 28 break 29 else: 30 all.append(entry) 31 32 # write lines to file with proper line-coding 33 fobj = open(fname, 'w') 34 for x in all: 35 fobj.writelines('%s%s' % (x, ls)) 36 fobj.close() 37 38 print 'Done!'
readTextFile.py
1 ''' 2 @auther:Feng Xu 3 ''' 4 'readTextFile.py -- read and display text file' 5 6 import os 7 8 while True: 9 fname = raw_input('Enter filename:') 10 if os.path.exists(fname): 11 break 12 else: 13 print "Error: %s not exists" % fname 14 15 #display contents to the screen 16 fobj = open(fname, 'r') 17 for eachline in fobj: 18 print eachline, 19 fobj.close()
【未完】