Python基础time模块及异常捕获操作


title: time模块的应用、try...except...finally
date: 2018-04-05 20:41:39
tags: "python 基础"


今天在写Spider的时候,发现获取的数据老是不完整(应有的数据未出来),因此在完善代码的时候,加了try异常操作,睡眠时间,明显有效果。

先来小结time模块常用内置函数:

  1. python time.time()
    python time.time()返回当前时间的时间戳(时间戳timestamp时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。通俗的讲,它是一个能表示一份数据在某个特定时间之前已经存在的、完整的、可验证的数据)
    time()方法的语法: time.time()
# -*-coding:utf-*-
import time
print(time.time())
>>>1522933182.9892895
  1. python localtime()方法
    python time.localtime()函数类似gmtime(),其作用是格式化时间戳为本地的时间
eg:  time.time()
>>>time.struct_time(tm_year=2018, tm_mon=4, tm_mday=5, tm_hour=21, tm_min=3, tm_sec=2, tm_wday=3, tm_yday=95, tm_isdst=0)
若将time.time()放在localtime()会是神马? 哈哈 实验一下
>>> time.localtime(time.time())
time.struct_time(tm_year=2018, tm_mon=4, tm_mday=5, tm_hour=21, tm_min=4, tm_sec=3, tm_wday=3, tm_yday=95, tm_isdst=0)
  1. python asctime()方法
    python time.asctime()函数接受时间元组并返回一个可读的形式(ps:Thu Apr 5 20:52:38 2018,2018年4月5日 周四20时53分14秒)约为24个字符的字符串
>>> time.asctime()
'Thu Apr  5 21:53:10 2018'
>>> time.asctime(time.localtime())
'Thu Apr  5 21:53:42 2018'
  1. python ctime()方法
    python ctime()函数把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式,如果参数未给或者为None的时候,将会默认time.time()为参数.它的作用相当于asctime(localtime(secs))
>>> time.localtime()
time.struct_time(tm_year=2018, tm_mon=4, tm_mday=5, tm_hour=22, tm_min=0, tm_sec=1, tm_wday=3, tm_yday=95, tm_isdst=0)
>>> time.asctime(time.localtime())
'Thu Apr  5 22:00:26 2018'
>>> time.ctime()
'Thu Apr  5 22:00:31 2018'

  1. python mktime()方法
    python mktime()函数把一个struc_time转化为时间戳
time.mktime(time.localtime())
1523082853.0
  1. python strftime()方法
    Python time strftime() 函数接收以时间元组,并返回以可读字符串表示的当地时间,格式由参数format决定。
    time.strftime(format[,t]) format --格式化字符串, t-- 可选的参数t是一个struct_time对象
    python中的时间日期格式化符号:
序号 符号 含义
1 %y 两位数的年份表示(00-99
2 %Y 四位数的年份表示(000-9999)
3 %m 月份(01-12)
4 %d 月内中的一天(0-31)
5 %H 24小时制小时数(0-23)
6 %I 12小时制小时数(01-12)
7 %M 分钟数(00=59)
8 %S 秒(00-59)
9 %a 本地简化星期名称
10 %A 本地完整星期名称
11 %b 本地简化的月份名称
12 %B 本地完整的月份名称
13 %c 本地相应的日期表示和时间表示
14 %j 年内的一天(001-366)
15 %p 本地A.M.或P.M.的等价符
16 %U 一年中的星期数(00-53)星期天为星期的开始
17 %w 星期(0-6),星期天为星期的开始
18 %W 一年中的星期数(00-53)星期一为星期的开始
19 %x 本地相应的日期表示
20 %X 本地相应的时间表示
21 %Z 当前时区的名称
备注: 1 “%p”只有与“%I”配合使用才有效果。
2 当使用strptime()函数时,只有当在这年中的周数和天数被确定的时候%U和%W才会被计算。

eg:
time_format='%Y-%m-%d%X'
time_current=time.strftime(time_format)

>>> import time
>>> time_format='%Y-%m-%d %X'
>>> time_current=time.strftime(time_format)
>>> time_current
'2018-04-0714:28:06'
>>> time_format="%b %d, %Y %I:%M:%S %p"
>>> time_current=time.strftime(time_format)
>>> time_current
'Apr 20, 2018 04:35:55 PM'
>>> time.strptime('2018-04-07 14:29:25',"%Y-%m-%d %X")
time.struct_time(tm_year=2018, tm_mon=4, tm_mday=7, tm_hour=14, tm_min=29, tm_sec=25, tm_wday=5, tm_yday=97, tm_isdst=-1)
需求写一个中间T格式的 :2017-11-18T18:42:01.211294
>>> time_format ='%Y-%m-%dT%X%S'
>>> time.strftime(time_format)
'2018-04-10T17:29:0000'
  1. time.sleep(): 线程推迟指定的时间运行.单位为秒 (可以作为阻塞作用使用,我在爬虫中常用,为了防止被ban,可作为反爬虫一小措施,)

  2. time.clock() 通常在python计算程序运行了多少时间

import time

start =time.clock()
a=sum(range(0,101))
print(a)
end=time.clock()
print('Running time:%s Seconds'%(end-start))
输出结果:
5050
Running time:2.8421247092743264e-05 Seconds

python的异常处理结构

  1. try...except...
  • 其中try子句中的代码块包含可能会引发异常的语句,而except子句则用来捕捉相应的异常。
  • 如果try子句中的代码引发异常并被except子句捕捉,就执行except子句的代码块;
  • 如果出现异常但没有被except捕获,继续往外层抛出,如果所有层都没有捕获并处理该异常,程序崩溃并将该异常呈现给最终用户。
  • 该结构语法如下:
try:
    #可能会引发异常的代码,先执行一下试试
except Exception[ as reason]:
    #如果try中的代码抛出异常并被except捕捉,就执行这里的代码
  1. try...except...else...
  • 如果try中的代码抛出了异常并且被except语句捕捉则执行相应的异常处理代码,这种情况下就不会执行else中的代码;
  • 如果try中的代码没有引发异常,则执行else块的代码。
  • 该结构的语法如下:
        #可能会引发异常的代码
    except Exception [ as reason]:
        #用来处理异常的代码
    else:
        #如果try子句中的代码没有引发异常,就继续执行这里的代码
  1. try...except...finally...
    在这种结构中,无论try中的代码是否发生异常,也不管抛出的异常有没有被except语句捕获,finally子句中的代码总是会得到执行。该结构语法为:
try:
    #可能会引发异常的代码
except Exception [ as reason]:
    #处理异常的代码
finally:
    #无论try子句中的代码是否引发异常,都会执行这里的代码
    可以捕捉多种异常的异常处理结构
    一旦try子句中的代码抛出了异常,就按顺序依次检查与哪一个except子句匹配,如果某个except捕捉到了异常,其他的except子句将不会再尝试捕捉异常。该结构类似于多分支选择结构,语法格式为:

    try:
        #可能会引发异常的代码
    except Exception1:
        #处理异常类型1的代码
    except Exception2:
        #处理异常类型2的代码
    except Exception3:
        #处理异常类型3的代码
    ...

常见异常类型

BaseException:所有异常的基类
SystemExitb python:解释器请求退出
KeyboardInterruptc:用户中断执行(通常是输入^C)

Exception:常规错误的基类

异常代码 对应的中文一览
StopIteratione 迭代器没有更多的值
GeneratorExita 生成器(generator)发生异常来通知退出
SystemExith Python 解释器请求退出
StandardErrorg 所有的内建标准异常的基类
ArithmeticErrord 所有数值计算错误的基类
FloatingPointErrord 浮点计算错误
OverflowError 数值运算超出最大限制
ZeroDivisionError 除(或取模)零 (所有数据类型)
AssertionErrord 断言语句失败
AttributeError 对象没有这个属性
EOFError 没有内建输入,到达EOF 标记
EnvironmentErrord 操作系统错误的基类
IOError 输入/输出操作失败
OSErrord 操作系统错误
WindowsErrorh Windows 系统调用失败
ImportError 导入模块/对象失败
KeyboardInterruptf 用户中断执行(通常是输入^C)
LookupErrord 无效数据查询的基类
IndexError 序列中没有没有此索引(index)
KeyError 映射中没有这个键
MemoryError 内存溢出错误(对于Python 解释器不是致命的)
UnboundLocalErrorh 访问未初始化的本地变量
ReferenceErrore 弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError 一般的运行时错误
NotImplementedErrord 尚未实现的方法
IndentationErrorg 缩进错误
TabErrorg Tab 和空格混用
SystemError 一般的解释器系统错误
ValueError 传入无效的参数
UnicodeErrorh Unicode 相关的错误
UnicodeDecodeErrori Unicode 解码时的错误
UnicodeEncodeErrori Unicode 编码时错误
UnicodeTranslateErrorf Unicode 转换时错误
DeprecationWarningj 关于被弃用的特征的警告
FutureWarningi 关于构造将来语义会有改变的警告
PendingDeprecationWarningi 关于特性将会被废弃的警告
RuntimeWarningj 可疑的运行时行为(runtime behavior)的警告
SyntaxWarningj 可疑的语法的警告
UserWarningj 用户代码生成的警告
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容