老王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()

原文地址:https://www.cnblogs.com/duyaya/p/8284412.html

时间: 2024-10-18 17:21:49

老王Python-进阶篇4-异常处理1.3(周末习题)的相关文章

老王python基础篇--python, 视频, 教程, 视频教程, 基础

老王python基础篇 基础篇11-python基本数据结构-元组和集合.rar 基础篇19-python语句与数据结构应用.rar 基础篇21-文本操作应用.rar 基础篇3-虚拟机安装xubuntu开发环境.rar 基础篇17-python语句1.2.rar 基础篇10-python基本数据结构-列表应用.rar 基础篇9-python基本数据结构-列表.rar 基础篇5-python基本数据类型讲解1.1.rar 基础篇18-基础篇综合习题.rar 基础篇8-python基本数据类型习题解

python进阶篇

python进阶篇 import 导入模块 sys.path:获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到. ? import sys ? sys.path.append("") 重新导入模块 ? reload(模块) ==.is a = [11,22,33] b = [11,22,33] >>>a == b True >>>a is b False >>>a = c

Python 进阶篇

作者:武沛齐 出处:http://www.cnblogs.com/wupeiqi/articles/5246483.html 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 import MySQLdb def GetList(sql): db = MySQLdb.connect(user='root', db='wupeiqidb', pass

Python进阶篇:Python简单爬虫

目录 前言 要解决的问题 设计方案 代码说明 小结 前言 前一段一直在打基础,已经学习了变量,流程控制,循环,函数这几块的知识点,就想通过写写小程序来实践一下,来加深知识点的记忆和理解.首先考虑的就是爬虫啦,一直很崇拜爬虫大师,特别想能够学习一些爬虫技术,去淘宝上爬爬数据,说不定什么时候可以使用数据进行一些分析,比如哪天自己也开了个小店啥的~~.为了能够开始起步, 我看了一些视频,查阅了一些资料,起步阶段就不用那些很牛逼的框架了,主要是想通过基本的爬虫来了解爬虫的基本概念和思路. 要解决的问题

Python进阶篇:文件系统的操作

通过一个例子来熟悉文件的基本操作:创建文件,读取文件,修改文件,删除文件,重命名文件,判断文件是否存在 1 ''' 2 编写可供查询的员工信息表--学号 姓名 年龄 班级 3 1. 提供格式化查询接口 4 2. 允许用户添加或者删除员工信息 5 ''' 6 import os 7 employee_dir = 'employee_list' 8 index=employee_dir+"/index" 9 10 11 if(not os.path.exists(employee_dir)

跟着老王学Python

亲爱的朋友: 欢迎你!很高兴能在这里见到你,你能来到这里说明你真的很喜欢python,很想把python给学好!我觉的你很幸运,开始我学python的时候比较少资料,学起来也比较头疼,现在随着python越来越流行, 资料也越来越多,大家以后学起来应该会轻松很多了.我前段时间花了很多时间整理了一些python教程,我觉的对初学python的朋友来说是个很好的引路人,我相信通过它你可以快速的上手python的.不信可以试试哦! 最近索取资料的朋友比较多,让老王python感到欣慰!为了让更多的朋友

【Python五篇慢慢弹(5)】‘类’过依然继续前行,直至ending再出发

‘类’过依然继续前行,直至ending再出发 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给出的pythondoc入门资料包含了基本要点.本文是对文档常用核心要点进行梳理,简单冗余知识不再介绍,作者假使你用c/java/c#/c++任一种语言基础.本系列文章属于入门内容,老鸟可以略看也可以略过,新鸟可以从篇一<快速上手学python>先接触下python怎样安装与运行,以及pychar

【Python五篇慢慢弹(4)】模块异常谈python

模块异常谈python 作者:白宁超 2016年10月10日12:08:31 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给出的pythondoc入门资料包含了基本要点.本文是对文档常用核心要点进行梳理,简单冗余知识不再介绍,作者假使你用c/java/c#/c++任一种语言基础.本系列文章属于入门内容,老鸟可以略看也可以略过,新鸟可以从篇一<快速上手学python>先接触下python怎样安装与运行,以及pycharm编辑器的使用和配置:

Python之路【第十七篇】:Django之【进阶篇】

Python之路[第十七篇]:Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 import MySQLdb def GetList(sql): db = MySQLdb.connect(user='root', db='wupeiqidb', passwd='1234', host='localhost')