当前位置: 首页 > 编程日记 > 正文

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

相关文章:

Springboot 日志管理模块编写记录

/**配置类 **/Component Order(value1) public class MyApplicationRunner implements ApplicationRunner{ /*private static final Logger logger LoggerFactory.getLogger(MyApplicationRunner.class);Autowiredprivate MemoryService memoryService; Overridepublic void r…

IEs 4 Linux 新版支撑 IE 7

Toy Posted in AppsIEs 4 Linux 可以让在 Linux 上安插 IE 变成一件异常俭省和高兴的事。昨天发布的 IEs 4 Linux 2.1 beta2 版末尾支撑安插 IE 7 了。不过,需求使用 –beta-install-ie7 的下令行选项来激活。据作者称,在 Linux 安插的 IE 7,…

h3c 3600 acl 配置 滤源IP是网关的ARP报文的ACL规则

h3c 3600 acl 配置 滤源IP是网关的ARP报文的ACL规则 悬赏分:100 - 解决时间:2009-3-8 14:30 星号之间是我在网上查到的华为交换机的配置方法: ************************************************ 全局配置ACL禁止所有源IP是网关的ARP报文 acl…

useradd与adduser的区别

useradd与adduser都是创建新的用户 在CentOs下useradd与adduser是没有区别的都是在创建用户,在home下自动创建目录,没有设置密码,需要使用passwd命令修改密码。 注:有朋友在博客园上回复我说 centos adduser 不创建用户home目录…

入门linux

作者:opmetic 出自: http://www.linuxdiyf.com说到入门linux ,仍是在大二的时辰,由于插手了黉舍的一个比赛举动,是在linux下的一个顺序匹敌,以是在自己的机子上装了一个RedHat9。厥后风闻它没有更新版本了,接着黉舍检…

springboot之异步调用@Async

引言: 在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的;但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在spring 3.…

js将字符串作为函数名调用函数

需求&#xff1a;获取JSON对象的函数名称&#xff0c;并执行该函数。 解决&#xff1a;用eval函数&#xff0c;字符串转换为命令行执行都可以通过eval函数。 计算 JavaScript 字符串&#xff0c;并把它作为脚本代码来执行。 function loadForm(itemCode){for(var i0;i<ITEM…

2010网络营销-电子商务厦门峰会即将开幕

曾几何时&#xff0c;安踏、361度等福建晋江企业通过在央视大规模投放广告使企业的知名度得到迅速提升&#xff0c;产品销量也节节攀升。如今&#xff0c;大批福建企业又把营销的战场转向了互联网&#xff0c;如何在互联网这个营销新战场续写辉煌成了众多福建企业当前最关心的问…

百度前端技术学院js任务三

任务地址&#xff1a;http://ife.baidu.com/course/detail/id/98 代码&#xff1a; 1 <!DOCTYPE>2 <html>3 <head>4 <meta charset"utf-8">5 <title>IFE JavaScript Task 01</title>6 </head>7 <body>8…

开源分布式Job系统,调度与业务分离-如何创建一个计划HttpJob任务

项目介绍&#xff1a; Hangfire&#xff1a;是一个开源的job调度系统,支持分布式JOB&#xff01;&#xff01; Hangfire.HttpJob 是我针对Hangfire开发的一个组件,该组件和Hangfire本身是独立的。可以独立更新Hangfire版本不影响&#xff01; 该组件已被Hangfire官方采纳&#…

小手段:开启 GNOME 的窗口分组效果

Toy Posted in Tips用过 Windows XP 的伴侣除夜要都晓得它有一项分组雷同义务栏按钮的效果&#xff0c;该效果主动将同类窗口的义务按钮折叠为一个单独的按钮&#xff0c;从而无效处置义务栏的窗口拥堵后果。其实&#xff0c;在 Linux 的 GNOME 桌面情况中也有雷同的效果──窗…

MySQL设值自动修改时间

ALTER TABLE form_ylqx ADD update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 修改时间

[原]不祥的CPU——Alpha

这几天都在捣鼓 Sun Fire V890 小型机&#xff0c;小型机可不像PC服务器那样“不一样的品牌&#xff0c;一样的芯”&#xff0c;不同的品牌的小型机最大的不同当数CPU和OS了&#xff0c;IBM小型机CPU是Power而OS是AIX&#xff0c;HP小型机的CPU是Intel的Itanium而OS是HP-UX&…

Leetcode 764. Largest Plus Sign

思路&#xff1a;动态规划。对于第i行第j列的元素grid[i][j]表示的是这个元素的plus sign的等级&#xff0c;初始化不在mines中的元素对应的grid值为较大值&#xff08;只要大于N/2即可&#xff09;&#xff0c;在mines中的元素对应的grid值为0。不在mines中的元素&#xff0c;…

吴裕雄--天生自然 JAVASCRIPT开发学习:(String) 对象

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body><script> var carname1"Volvo XC60"; var carname2Volvo XC60; var answer1It\s al…

校园音乐点歌平台的设计与开发 微信小程序 点歌系统 java 开发

1、 微信小程序前台展示 2 、 使用到的技术框架 Springbootmavenmybatis网易云相关API 3、 后台展示 项目地址&#xff1a; 项目地址

Tile Racer — 3D 赛车游戏

Toy Posted in Tile Racer 是一款可免用度于 Linux 及 Windows 平台的 3D 赛车游戏。它不只具有十分逼真的效果&#xff0c;并且包罗用来创设新 Maps 的赛道编辑器。玩家可置身于游戏之中足够觉获得赛车的快乐喜爱。Tile Racer 此后最新版本为 0.6&#xff0c;你可以从这里下载…

如何找寻最适合的WEB应用安全解决方案(视频)

51CTO最近举办了一个“拯救网站运维经理赵明”的活动&#xff0c;活动主要讲了一个网站运维经理由于网站被黑而面临失业的故事。其中急需解决的问题&#xff0c;就是如何保护我们的网站。Web应用安全该如何做&#xff1f;怎么才能找到最佳方案&#xff1f;我们就这一主题来采访…

docker 笔记 (6)搭建本地registry

转&#xff1a;http://blog.csdn.net/felix_yujing/article/details/51564739 新版 registry v2对镜像存储格式进行了重新设计&#xff0c;并且和旧版还不兼容。registry v2是由go语言开发&#xff0c;docker从1.6版本开始支持registry v2&#xff0c;之前python开发的老版regi…

2019攻防世界web新手区

robots 看了题目描述&#xff0c;发现与robots协议有关&#xff0c;过完去百度robots协议。发现了robots.txt&#xff0c;然后去构造url访问这个文件 http://111.198.29.45:42287/robots.txt 得到提示&#xff1a;Disallow: f1ag_1s_h3re.php&#xff0c;再次构造url&#xff0…

SSM实现网上商城 有聊天功能

1.项目介绍 实现一个网上商城&#xff0c;商品信息展示&#xff0c;购物车&#xff0c;订单管理&#xff0c;个人中心&#xff0c;商品评价&#xff0c;商品搜索&#xff0c;地址管理&#xff0c;聊天&#xff0c;后台管理&#xff08;商品增删改查&#xff09;&#xff0c;分类…

as3中TextFormat类的使用

在AS3中对TextField进行格式化时可以有三种方法&#xff1a;html标签控制格式css使用TextFormathtml比较方便&#xff0c;但很有限&#xff0c;CSS可以外置维护比较容易&#xff0c;但缺少变化&#xff0c;TextFormat可以复杂多变&#xff0c;只是写起来比较麻烦&#xff0c;并…

pyqt5 使用 QTimer, QThread, pyqtSignal 实现自动执行,多线程,自定义信号触发。

渣渣用法&#xff0c;请等待我心情好的时候更新。 1.第一个例子 1.1 先看mainwindow.py from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(640, 320…

linux secureCRT 显示中文乱码

安装的时候&#xff0c;只安装了英文&#xff0c;没有安装中文&#xff0c;所以只有en_US.UTF-8.因为linux本身就支持多语言&#xff0c;所以我们只需要在光盘 上找到&#xff12;个中文支持字体包安装上即可.这两个字体文件是存放在第四张光盘上的Servers目录下: fonts-chines…

PicGo 配置Gitee 图床

目录 1.下载安装picGo 2.打开picGo详情页面 3.创建gitee图床库 ​4. 配置picGo 5.获取gitee token信息 6.与typora搭配使用 1.下载安装picGo 百度picgo csdn下载地址:https://download.csdn.net/download/huyande123/12582917 2.打开picGo详情页面 3.创建gitee图床库 …

文件夹内多文件上传到服务器

文件夹上传至服务器希望可以给你一点帮助 直接上代码jsp页面 <div style"text-align:center; vertical-align:middel" id"uploadFile"> <input type"file" name"file" id"file" multiple"multiple" webk…

【Socket研究】~。~ Scoket开发蛋疼笔记 Silverlight

客户端连接步骤【Silverlight】 【注意】 Silverlight 客户端 记得一定是异步连接。 一。连接步骤 1.实例一个Scoket 2.实例套接字 SocketAsyncEventArgs 3.给套接字载入连接信息 4.载入异步方法转载于:https://www.cnblogs.com/manbaal/archive/2011/03/08/1977521.html

通知:正式迁移至新博客

博客迁移这事情已经有一段时间了&#xff0c;不过最近发现似乎还有许多朋友不知道这点&#xff0c;以为我怎么不写博客了——其实我还在写&#xff0c;写的还挺勤快的&#xff0c;只不过已经不继续同步到博客园了。这事儿说来也很遗憾&#xff0c;原本我打算两边同步更新&#…

java中别名问题

Java中别名问题 Java中涉及到对象引用时常常出现意想不到得问题直接将一个对象赋值给另一个对象时 改变另一个对象 开始的那个对象也出现改变class Person{private int age;public int getAge() {return age;}public void setAge(int age) {this.age age;}} 对于对象Person做如…

中国挪动批改KPI查核制度将器重客户满意度

飞象网讯&#xff08;魏德龄/文&#xff09;记者从相关动静处置解到&#xff0c;中国挪动2011年的KPI查核将大幅缩减&#xff0c;并消除数据业务、TD用户数和集体客户等目标&#xff0c;重点调高了利润和客户满意度目标&#xff0c;并加入了相关EVA财务目标查核。去年&#xff…