老王Python-进阶篇4-异常处理1.3(周末习题)
一 编写with操作类Fileinfo(),定义__enter__和__exit__方法。完成功能:
1.1 在__enter__方法里打开Fileinfo(filename),并且返回filename对应的内容。如果文件不存在等情况,需要捕获异常。
1.2 在__enter__方法里记录文件打开的当前日期和文件名。并且把记录的信息保持为log.txt。内容格式:"2014-4-5 xxx.txt"
1 import logging,os 2 3 class Fileinfo(object): 4 5 def __init__(self,filename): 6 self.filename=filename 7 8 def __enter__(self): 9 try: 10 with open(self.filename,'r') as new_file: 11 new_file.seek(0) 12 content=new_file.read() 13 except IOError: 14 return 'error' 15 else: 16 self.__exit__() 17 return content 18 19 20 def __exit__(self): 21 logging.basicConfig(level=logging.DEBUG) 22 logger=logging.getLogger() 23 logger.setLevel=(logging.DEBUG) 24 hfile=logging.FileHandler(r"C:\Users\Administrator\Desktop\sendlog.log") 25 hfile.setLevel=(logging.DEBUG) 26 formatter=logging.Formatter('[%(asctime)s]' '%(message)s') 27 hfile.setFormatter(formatter) 28 logger.addHandler(hfile) 29 30 logging.debug(self.filename) 31 32 if __name__=='__main__': 33 c=Fileinfo('C:\\Users\\Administrator\\Desktop\\12.txt') 34 print c.__enter__()
二:用异常方法,处理下面需求:
info = ['http://xxx.com','http:///xxx.com','http://xxxx.cm'....]任意多的网址
2.1 定义一个方法get_page(listindex) listindex为下标的索引,类型为整数。 函数调用:任意输入一个整数,返回列表下标对应URL的内容,用try except 分别捕获列表下标越界和url 404 not found 的情况。
2.2 用logging模块把404的url,记录到当前目录下的urlog.txt。urlog.txt的格式为:2013-04-05 15:50:03,625 ERROR http://wwwx.com 404 not foud、
1 import logging,os,urllib 2 3 class page(object): 4 global a 5 def __init__(self,num): 6 self.num=num 7 8 def get_page(self): 9 try: 10 new_url=a[self.num] 11 f=urllib.urlopen(new_url) 12 if urllib.urlopen(new_url).code==404: 13 raise Exception 14 except IndexError: 15 return u'\n超出范围' 16 except Exception: 17 self.__exit__() #内部方法调用 18 return 'url 404 not found' 19 else: 20 return f.read() 21 22 def __exit__(self): 23 logging.basicConfig(level=logging.ERROR) 24 logger=logging.getLogger() 25 logger.setLevel=(logging.DEBUG) 26 hfile=logging.FileHandler(r"C:\Users\Administrator\Desktop\urllog.log") 27 hfile.setLevel=(logging.DEBUG) 28 formatter=logging.Formatter('[%(asctime)s]''-''%(levelname)s''-''%(message)s') 29 hfile.setFormatter(formatter) 30 logger.addHandler(hfile) 31 32 logging.error(a[self.num]) 33 34 if __name__=='__main__': 35 num=int(raw_input('please input a number:\n')) 36 a=['https://wenda.so.com/q/1480716337726538','http://www.cnblogs.com/duyaya/','http://www.cn.com/d/'] 37 c=page(num) 38 print c.get_page()
3、
三:定义一个方法get_urlcontent(url)。返回url对应内容。
要求:
1自己定义一个异常类,捕获URL格式不正确的情况,并且用logging模块记录错误信息。
2 用内置的异常对象捕获url 404 not found的情况。并且print 'url is not found'
1 import logging,os,urllib,re 2 3 class page(object): 4 global a 5 def __init__(self,num): 6 self.num=num 7 8 def get_page(self): 9 ''' 10 1、先判断URL是否合法: 11 如果不合法,保存日志,并返回'url is wrong' 12 如果合法,判断URL是否可以打开: 13 如果不可以打开,抛出异常 14 如果打开,返回页面数据 15 16 ''' 17 try: 18 new_url=a[self.num] 19 20 modle_url=re.compile('^(http|https)\:(\/\/|\\\\)\w+\.\w+\.(com|cn)') 21 m1=modle_url.search(new_url) 22 23 if m1==None: 24 self.__exit__() #内部方法调用 25 return u'\n url不合法' 26 else: 27 f=urllib.urlopen(new_url) 28 if urllib.urlopen(new_url).code==404: 29 raise Exception 30 except IndexError: 31 return u'\n超出范围' 32 except Exception: 33 return 'url 404 is not found' 34 else: 35 return f.read() 36 37 def __exit__(self): 38 logging.basicConfig(level=logging.ERROR) 39 logger=logging.getLogger() 40 logger.setLevel=(logging.DEBUG) 41 hfile=logging.FileHandler(r"C:\Users\Administrator\Desktop\urllog.log") 42 hfile.setLevel=(logging.DEBUG) 43 formatter=logging.Formatter('[%(asctime)s]''-''%(levelname)s''-''%(message)s') 44 hfile.setFormatter(formatter) 45 logger.addHandler(hfile) 46 47 logging.error(a[self.num]) 48 49 if __name__=='__main__': 50 num=int(raw_input('please input a number:\n')) 51 a=['https://wenda.so.com/q/1480716337726538','http:www.cnblogs.com/duyaya/','http://www.cn.com/d/'] 52 c=page(num) 53 print c.get_page() 54 #输入0,可正常打印URL信息 55 #输入1,打印 URL不合格 56 #输入2,打印 URL 404 is not find 57 #输入3,打印 超出范围
转载于:https://www.cnblogs.com/duyaya/p/8284412.html
老王Python-进阶篇4-异常处理1.3(周末习题)相关推荐
- python将姓王的都改成老王_老王Python基础+进阶+项目篇(高清无密)
老王Python教程 基础篇 基础篇1-福利课python先入为主上 基础篇2-福利课-python先入为主下篇 基础篇3-虚拟机安装xubuntu开发环境 基础篇4-linux基本命令以及开发环境 ...
- python全套教学免费版_老王Python全套教程完整版
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 课程简介:本套教程为老王的python教程,分基础篇和进阶篇,可以帮助大家从基础学python.基础篇共22课,进阶篇共12课.零基础教学从最基础的知识点 ...
- python进阶教程之异常处理
python进阶教程之异常处理 这篇文章主要介绍了python进阶教程之异常处理,在项目开发中,异常处理是不可或缺的,需要的朋友可以参考下 在项目开发中,异常处理是不可或缺的.异常处理帮助人们debu ...
- 三步解决C语言中struct字节对齐问题,Python进阶篇-struct字节对齐问题
Python进阶篇-struct字节对齐问题 Python进阶篇-struct字节对齐问题 Python调用C的时候,会传递一些复杂的数据结构,例如结构体,这时候就会遇到各种各样字节对齐的问题.下边所 ...
- python全套教程-老王Python全套教程完整版
课程目录 PYthon基础篇 基础篇1-福利课Python先入为主 基础篇2-福利课Python先入为主下 基础篇3-虚拟机安装xubuntu开发环境 基础篇4-linux基本命令以及开发环境 基础篇 ...
- python进阶篇:如何进行存档!粉丝特辑!
python进阶篇:如何进行存档!粉丝特辑! 大家好!制作不易,请求赞赏! 大家一般在制作游戏的时候,都很想制作存档这个功能,但到底怎么做呢? 下面就告诉大家! 1.1基本文件操作 为什么要学这个呢? ...
- 老王 python ,
老王 python , 留言本_python相关的python 教程和python 下载你可以在老王python里寻觅_老王python python 入门教程 python教程 练习题 问答 dja ...
- 老王python培训全套教程
京广源莹都科贸有限公司 北京加动能培训学校 北京加动能培训学校是一家拥有自主知识产权的中小学培训机构. 前台 任职要求: 1.女性,形象气质佳. 2.有相关前台工作经验者优先录取. 3.有良好的沟通能 ...
- Python进阶篇---异常处理
栗子: 举一个花费金币的栗子,假设原始金币有1000,现需要输入一个数字,使得金币数量减少 为防止输入异常信息,需要对程序进行容错异常处理 money = 1000 num = input('plea ...
- 老鱼Python数据分析——篇十三:“选股宝”数据下载代码优化
今天在测试下载本月(5月)数据时发现,只有6号.7号.9号和15号有数据,其他日期的数据都是完全相同的. 如何解决这个问题? 通过观察发现,没有数据或数据读取很慢时,页面上会出现这样的进度条: 所以修 ...
最新文章
- numpy库学习 向量 矩阵 均为有两个[[ ,而秩为1的数组只有一个[ np.array([[]]) 与np.array([])的区别
- java制作带有logo的二维码,解决zxing中文乱码
- 获取Android版本信息和电话信息
- LeetCode 1029. 两地调度(贪心)
- express框架+fetch/axios.js(本机实现跨域请求)
- ct与x光的哪个辐射大_ct和x光哪个辐射大
- flume handler
- java中各种常见的异常
- APP拉新的五种方法,找准目标用户,转为注册用户
- 【洛谷试炼场】洛谷新手村——洛谷的第一个任务
- VUE 动态响应的实现
- statsmodels.stats.proportion.proportions_ztest
- 计算机网络第七版--概述知识点总结
- python 根据空格切割英文单词
- 解决问题就像剥洋葱,解决的关键是基础知识
- 老黄历吉日吉时查询接口实现及代码示例
- 【面经】字节跳动C++社招5轮面试题分享
- 南邮ctf nctf CG-CTF web题writeup
- BZOJ1193 马步距离 (贪心)
- jtopo新增节点(拖拽节点到画布),<画布放大缩小或拖拽后,新增节点还在鼠标松开得位置>