美文网首页
Python基础time模块及异常捕获操作

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

作者: Dylan_2df0 | 来源:发表于2018-04-08 22:17 被阅读0次

    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 用户代码生成的警告

    相关文章

      网友评论

          本文标题:Python基础time模块及异常捕获操作

          本文链接:https://www.haomeiwen.com/subject/cbfvhftx.html