time、datetime、sys、序列化模块

time 模块

python
import time
time.sleep([n]) #休眠Ns
time.time() #获取当前时间戳

在python中,表示时间通常有三种方式:

-时间戳(timetamp):表示的是从1970年.01.01 00:00:00开始按秒计算的偏移量.

-格式化的时间字符串(format string)

2019-7-26 08:46:30

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

import time
time.time

dir(time)

time.strftime("%Y-%m-%d %X")
‘2019-07-26 08:56:24’

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 当前时区的名称

%% %号本身

import time
>>> time.time()
1564101692.7392354

>>> dir(time)
['_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'clock', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'perf_counter', 'process_time', 'sleep', 'strftime', 'strptime', 'struct_time', 'time', 'timezone', 'tzname']

>>> [i for i in dir(time) if not i.startswith("_")]
['altzone', 'asctime', 'clock', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'perf_counter', 'process_time', 'sleep', 'strftime', 'strptime', 'struct_time', 'time', 'timezone', 'tzname']

time模块的常用方法

方法描述
time.localtime([sec])将一个时间戳转化为当前时去的struct_time(若未提供参数,当前时间)
time.gmtime([sec])和localtime()类似,不同的是,其是将一个时间戳转化为UTC时区(0时区)的struct_time
time.time()返回当前时间戳
time.mktime(t)将time.struct_time转化为时间戳
time.sleep(sec)线程推迟指定的时间运行,单位(s)
time.asctime([t])把表时间的元祖或struct_time表示为:“Sun July 26 09:06:35 2019”;如果未传参数,默认为time.localtime()
time.ctime([t])把一个时间戳转化为time.asctime()的形式.如果未传参数,默认time.time()
time.strftime(format[,t]把一个代表时间的元祖/struct_time(localtime()和gmtime()转化为格式化的字符串,未传参数,默认为time.localtime()
time.strptime()将结构化字符串转化为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=18, tm_sec=10, 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=18, tm_sec=10, tm_wday=4, tm_yday=207, tm_isdst=0)
>>>

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

  • time.mktime(结构化时间)
>>> time.mktime(tp_struct)
1564104157.0
>>> time.time()
1564104210.9491699
>>>

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

  • time.strftime(format[,t])
>>> time.strftime("%Y-%m-%d %x",tp_struct)
'2019-07-26 07/26/19'

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

  • time.strptime(时间字符串,字符串
>>> time.strptime("2019-01-26","%Y-%m-%d")
time.struct_time(tm_year=2019, tm_mon=1, tm_mday=26, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=26, tm_isdst=-1)
>>>

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

  • time.asctime(结构化时间)
>>> tp_struct = time.localtime()
>>> time.asctime(tp_struct)
'Fri Jul 26 09:49:19 2019'
>>> time.asctime()
'Fri Jul 26 09:50:23 2019'
>>>>>> time.ctime(1500000000)
'Fri Jul 14 10:40:00 2017'
>>>

datetime模块

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

方法(类)描述
datetime.date表示日期(类),常用属性year,month,day
datetime.time表示时间(类),常用属性hour,minute,second,microsecond
datetime.datetime表示日期
datetime.timedelta表示时间间隔
datetime.tzinfo与时区有关的信息
>>> datetime.datetime.now()
datetime.datetime(2019, 7, 26, 10, 2, 25, 444424)
>>> print(datetime.datetime.now())
2019-07-26 10:02:49.956399
>>>
>>> print(datetime.datetime.now().date())
2019-07-26
>>> print(datetime.datetime.now().time())
10:05:24.965656
>>> print(datetime.datetime.now()+datetime.timedelta(-1))
2019-07-25 10:06:58.068425
>>> print(datetime.datetime.now()+datetime.timedelta(hours = 1))
2019-07-26 11:07:13.796489
>>>

sys模块

sys模块是与python解释器交互的一个接口

处理命令行参数

在解释器启动后,argv列表包含了传递脚本的所有参数,列表的第一个元素

import sys
print("Script name is", sys.argv[0])
if len(sys.argv)>1:
    print("There are", len(sys.argv)-1,'arguments')
    for i in sys.argv[1:]:
        print(i)
else:
    print('There are no arguments ')

D:\NEWS Por>python day9_0726_time.py
Script name is day9_0726_time.py
There are no arguments

D:\NEWS Por>python day9_0726_time.py aa bb cc
Script name is day9_0726_time.py
There are 3 arguments
aa
bb
cc

序列化模块

序列化

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

python中叫pickling.

为什么要使用序列化?

  • 持久化数据类型
  • 跨平台交互使用
  • 使程序更易维护

在这里插入图片描述

json

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

Json类型python类型
{}dict
[]list
“string”str
1234.56int/float
true/falseTrue/False
nullnone

json 优缺点

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

四个功能

  • dumps

  • dump

  • loads

  • load

    >>> import json
    >>> dic={"name":"City College","age":20,"type":"University"}
    >>> sr_dic = json.dumps(dic)
    >>> type(sr_dic)
    <class 'str'>
    >>> print(sr_dic)
    {"name": "City College", "age": 20, "type": "University"}
    >>> dic
    {'name': 'City College', 'age': 20, 'type': 'University'}
    >>> sr_dic
    '{"name": "City College", "age": 20, "type": "University"}'
    >>> dic={"name":"City College","age":20,"type":"University"}
    >>> sr_dic=json.dumps(dic)
    >>> sr_dic
    '{"name": "City College", "age": 20, "type": "University"}'
    >>> dic_2 = json.loads
    >>> dic_2 = json.loads(sr_dic)
    >>> type(dic_2)
    <class 'dict'>
    >>> dic_2
    {'name': 'City College', 'age': 20, 'type': 'University'}
    >>>
    #如果是元祖.序列化时强转为列表,若元祖作为字典的键,序列化时报错.
    

    如果把数据类型直接序列化写入文件中,可以用dump和load方法.

    
    

pickle

只用于Python

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

pickle优缺点

-优点

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

-缺点

  • 只支持python

模块提供四个功能

  • 序列化

    • dumps
    • dump
  • 反序列化

    • loads()
    • load()

import pickle

dic = {“name”:“city college”,“age”:20,“type”:“university”,2:6}

dic_b = pickle.dumps(dic)

print(type(dic_b))

dic_d = pickle.loads(dic_b)

print(type(dic_d))

print(dic_b)

dic_d = pickle.loads(dic_b)

print(type(dic_d))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值