Python中的異常處理的習題
阿新 • • 發佈:2018-01-27
and 功能 lambda exce raw log att 偶數 port 2 定義一個函數func(listinfo) listinfo:為列表,listinfo = [133, 88, 24, 33, 232, 44, 11, 44],返回列表小於100,且為偶數的數
1 定義一個函數func(filepath) filepath:為文件名,用with實現打開文件,並且輸出文件內容。
1 # -*- coding: UTF-8 -*- 2 3 4 def func(filepath): 5 with open(filepath) as aj: 6 return aj.read() 7 8 print func(r‘E:/system.txt‘)
2 定義一個函數func(listinfo) listinfo:為列表,listinfo = [133, 88, 24, 33, 232, 44, 11, 44],返回列表小於100,且為偶數的數
1 # -*- coding: UTF-8 -*- 2 3 4 def func2(listinfo): 5 try: 6 result = filter(lambda k: k < 100 and k % 2 == 0, listinfo) 7 except Exception as e: 8 return e 9 else: 10 return result 11 12 listinfo = [133, 88, 24, 33, 232, 44, 11, 44] 13 print func2(listinfo)
3定義一個異常類,繼承Exception類, 捕獲下面的過程:判斷raw_input()輸入的字符串長度是否小於5,如果小於5,比如輸入長度為3則輸出yes,大於5輸出no
1 # -*- coding: UTF-8 -*- 2 3 4 class my_error(Exception): 5 6 def __init__(self,str1): 7 self.leng = len(str1) 8 9 def process(self): 10 if self.leng < 5: 11 return‘yes‘ 12 else: 13 return ‘no‘ 14 try: 15 raise my_error(‘sktaa‘) 16 except my_error as e: 17 print e.process()
4.編寫with操作類Fileinfo(),定義__enter__和__exit__方法。完成功能:
4.1 在__enter__方法裏打開Fileinfo(filename),並且返回filename對應的內容。如果文件不存在等情況,需要捕獲異常。
4.2 在__enter__方法裏記錄文件打開的當前日期和文件名。並且把記錄的信息保持為log.txt。內容格式:"2014-4-5 xxx.txt"
1 # -*- coding: UTF-8 -*- 2 import logging 3 import time 4 newTime = time.time() 5 6 7 class Fileinfo(object): 8 def __init__(self, filename): 9 self.filename = filename 10 11 def __enter__(self): 12 try: 13 f1 = open(self.filename,‘r‘) 14 content = f1.read() 15 except IndexError as e: 16 print str(e) + "the file doesn‘t exist" 17 else: 18 f1.close() 19 return content 20 21 def __exit__(self, exc_type, exc_val, exc_tb): 22 with open(‘log.txt‘,‘a+‘) as log_f1: 23 log_f1.write(‘%s %s\n‘%(Fileinfo.newTime,self.filename))
5 定義一個函數func(urllist),urllist 為URL的列表,如:[‘http://xxx.com‘,‘http:///xxx.com‘,‘http://xxxx.cm‘....]。 功能如下:
5.1 依次打開URL
5.2 打印URL對應的內容
5.3 若URL打不開,則把URL記錄到日誌文件,跳過繼續訪問下一個URL
1 # -*- coding: UTF-8 -*- 2 import urllib 3 import logging 4 5 6 logger = logging.getLogger() 7 hdlr = logging.FileHandler(‘sendlog.log‘) 8 formatter = logging.Formatter(‘%(message)s‘) 9 hdlr.setFormatter(formatter) 10 logger.addHandler(hdlr) 11 logger.setLevel(logging.NOTSET) 12 13 14 def func(urllist): 15 for i in urllist: 16 try: 17 u = urllib.urlopen(i) 18 except IOError: 19 logging.error(i) 20 else: 21 print u.read 22 finally: 23 u.close() 24 func([‘http://www.baidu.com‘, ‘http://weibo.com‘])
Python中的異常處理的習題