day1-5Time模块

Time 模块

import time
# time.sleep(n)#休眠N s
# time.time()#获取当前时间戳

在Python中,表示时间通常有3种:

  • 时间戳(timetamp):表示的事从1970.01.01 00:00:00 开始按秒计算的偏移量
  • 格式化的时间字符串(format string)

2019-7-26 08:48:34

  • 结构化的时间(struct_time)—>元组,9个元素(年月日时分秒,一年的第几周,一年的第几天,夏时令)

    python中时间日期格式化符号:
    %y 两位数的年份表示(00-99)
    %Y 四位数的年份表示(000-9999)
    %m 月份(01-12)
    %d 月内中的一天(0-31)
    %H 24小时制小时数(0-23)
    %I 12小时制小时数(01-12)
    %M 分钟数(00=59)
    %S 秒(00-59)
    %a 本地简化星期名称
    %A 本地完整星期名称
    %b 本地简化的月份名称
    %B 本地完整的月份名称
    %c 本地相应的日期表示和时间表示
    %j 年内的一天(001-366)
    %p 本地A.M.或P.M.的等价符
    %U 一年中的星期数(00-53)星期天为星期的开始
    %w 星期(0-6),星期天为星期的开始
    %W 一年中的星期数(00-53)星期一为星期的开始
    %x 本地相应的日期表示
    %X 本地相应的时间表示
    %Z 当前时区的名称
    %% %号本身

    print(dir(time))
    print([i for i in dir(time) if not i.startswith('_')])
    

    [’_STRUCT_TM_ITEMS’, ‘doc’, ‘loader’, ‘name’, ‘package’, ‘spec’, ‘altzone’, ‘asctime’, ‘clock’, ‘ctime’, ‘daylight’, ‘get_clock_info’, ‘gmtime’, ‘localtime’, ‘mktime’, ‘monotonic’, ‘monotonic_ns’, ‘perf_counter’, ‘perf_counter_ns’, ‘process_time’, ‘process_time_ns’, ‘sleep’, ‘strftime’, ‘strptime’, ‘struct_time’, ‘thread_time’, ‘thread_time_ns’, ‘time’, ‘time_ns’, ‘timezone’, ‘tzname’]
    [‘altzone’, ‘asctime’, ‘clock’, ‘ctime’, ‘daylight’, ‘get_clock_info’, ‘gmtime’, ‘localtime’, ‘mktime’, ‘monotonic’, ‘monotonic_ns’, ‘perf_counter’, ‘perf_counter_ns’, ‘process_time’, ‘process_time_ns’, ‘sleep’, ‘strftime’, ‘strptime’, ‘struct_time’, ‘thread_time’, ‘thread_time_ns’, ‘time’, ‘time_ns’, ‘timezone’, ‘tzname’]

Time模块的常用方法

方法描述
time.localtime([sec])将一个时间戳转化为一个当前时区的struct_time(若未提供参数,当前时间)
time.gmtime([sec])和localtime() 类似,不同的事,其将一个时间戳转换成UTC时区(0时区)的struct_time
time.timr()返回当前时间戳
time.mktime(t)将time.struct_time转化为时间戳
time.sleep(sec)线程推迟指定的时间运行,单位(s)
time.asctime([t])把表时间的元组或者struct_time表示为:‘Sun July 26 09:15:23 2019’;如果为传参数,默认为time.localtime()
time.ctime([t])将时间戳的时间转换为表示本地时间的字符串。如果没有提供secs或没有提供secs,则使用time()返回的当前时间
time.strftime(format[,t])将struct_time类型的时间转换为format参数指定格式的字符串。
time.strftime()将结构化字符串转化成为struct_time
>>> now=time.time()
>>> time.gmtime(now)#UTC时间 ,0时区
time.struct_time(tm_year=2019, tm_mon=7, tm_mday=26, tm_hour=1, tm_min=22, tm_sec=52, tm_wday=4, tm_yday=207, tm_isdst=0)
>>> time.localtime(now)#当地时间
time.struct_time(tm_year=2019, tm_mon=7, tm_mday=26, tm_hour=9, tm_min=22, tm_sec=52, tm_wday=4, tm_yday=207, tm_isdst=0)
>>>

结构化时间和时间戳的转化

  • time.mktime(结构化时间)

    >>> tp=time.localtime()
    >>> time.mktime(tp)
    1564104550.0
    

结构化时间到字符串时间的转化

  • time.strftime(format[,t])

    >>> tp=time.localtime()
    >>> time.strftime('%Y-%m-%d %X',tp)
    '2019-07-26 09:29:10'
    

字符串时间到结构化时间的转化

time.strptime(‘2019-07-26’,’%Y-%m-%d’)(时间字符串,字符串对应的格式)

>>> time.strptime('2019-07-26','%Y-%m-%d')
time.struct_time(tm_year=2019, tm_mon=7, tm_mday=26, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=207, tm_isdst=-1)

结构化时间和字符串时间的转化(国际化时间字符串)

  • time.asctime(结构化时间)
>>> tp=time.localtime()
>>> time.asctime(tp)
'Fri Jul 26 09:29:10 2019'
>>> time.asctime()
'Fri Jul 26 09:50:26 2019'
>>>

时间戳和字符串的转化(国际化)

>>> time.ctime(time.time())
'Fri Jul 26 09:52:55 2019'
>>> time.ctime()
'Fri Jul 26 09:53:16 2019'
>>> time.ctime(150000000)
'Thu Oct  3 10:40:00 1974'
>>>

datatime模块

相比time来说,datetime模块接口更直观,更容易调用

方法(类)描述
datetime.date表示日期(类),常用属性year,month,day
datetime.time表示时间(类),常用属性hour,minute,second,microsecond
datetime.datetime表示日期
datetime.timedelta表示时间间隔
datetime.tzinfo与时区有关
>>> import datetime
>>> print(datetime.datetime.now().date())
2019-07-26
>>> print(datetime.datetime.now().time())
10:08:16.444363
>>>
print (datetime. datetime .now() + datetime . timedelta(-1)) #当前时间减1天
# 2018-11-22 15:13:28.673403
print (datetime . datetime . now() + datetime. timedelta(hours = 1)) #当前时间加1小时
# 2018-11-23 16:13:28.673403

sys模块

sys

import sys#显示本地字节序的指示符。
print(sys. byteorder)#显示python解释器有关的版权信息
print(sys.copyright)#显示python解释器在磁盘上的存储路径
print(sys executable)#显示当前系统上爆出文件所用的字符集
print(sys. getfilesystemencoding())#显示Python整数支持的最大值
print(sys.maxsize)#显示python解释器所在平台
print(sys.platform)#显示当前Python解释器的版本信息。
print(sys. version)#返回当前Python解释器的主版本号

序列化模块

序列化

概念:将一个对象从内存中转换为可存储(字符串类型)或者可传输(bytes)类型的过程

python中叫picking

为什么要使用序列化?

  • 持久化数据类型

  • 跨平台交互使用

  • 使程序更易维护

    [外链图片转存失败(img-ul1MkNI4-1564215488841)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1564122134957.png)]

json

json格式在各个语言中都可以通用序列化格式。在json中,所有的字符串必须为‘ ‘ 。

json类型python类型
{}dict
[]list
“string”str
1234.56int/float
true/flaseTrue/Flase
nullNone

json 优越点

  • 优点:所有的数据类型是各语言通用的
  • 缺点:
    • json 只支持比较少的数据类型
    • 对数据类型的约束十分严格
      • 字典中的key必须是字符串
      • json只支持列表,字典,数值,字符串以及布尔值

查看json的方法和属性

四个属性

  • dump

  • dumps

  • loads

  • load

    >>> import json
    #序列化
    >>> dic={'name':'asda','age':32,'type':'nihao'}
    >>> sr_dic=json.dumps(dic)
    >>> type(sr_dic)
    <class 'str'>
    >>> print(sr_dic)
    {"name": "asda", "age": 32, "type": "nihao"}
    >>> dic
    {'name': 'asda', 'age': 32, 'type': 'nihao'}
    >>> sr_dic
    '{"name": "asda", "age": 32, "type": "nihao"}'
    >>>
    
    
    >>> dic={'name':'asda','age':32,'type':'nihao',2:6}
    >>> sr_dic=json.dumps(dic)
    >>> sr_dic
    '{"name": "asda", "age": 32, "type": "nihao", "2": 6}'
    
    
    dic = {'name': 'asda', 'age': 32, 'type': 'nihao', 2: 6}
    dic2={'城市':'杭州','历史':5000}
    with open('dump_json','w') as f:
        sr_dic1=json.dumps(dic)
        sr_dic2=json.dumps(dic2)
        f.write(sr_dic1+'\n')
        f.write(sr_dic2+'\n')
    with open('dump_json') as f:
        for line in f:
            ret=json.loads(line)
            print(ret)
    {'name': 'asda', 'age': 32, 'type': 'nihao', '2': 6}
    {'城市': '杭州', '历史': 5000}
    

pickle

只用于python

内存中结构化的数据<—>格式pickle<—>bytes类型<—>保存在文件或基于网络传输

pickle 优缺点

  • 优点
    • 支持python中几乎所有类型
    • pickle会把数据类型序列化为bytes类型
  • 缺点
    • 只支持python

模块提供的四个功能:dumps,dump,loads,load

  • 序列化
    • dumps
    • dump
  • 反序列化
import pickle
dic = {'name': 'asda', 'age': 32, 'type': 'nihao', 2: 6}
dic_b=pickle.dumps(dic)
print(type(dic_b))
dic_d=pickle.loads(dic_b)
print(type(dic_d))

<class ‘bytes’>
bytes类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值