模块-2

time模块

import time
time.sleep(n) #休眠n秒

time.time() #获取往当前时间戳。

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

  • 时间戳(timetamp):表示1970.01.01 00:00:00 开始按秒计算的偏移量

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

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

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

>>> time.localtime()
time.struct_time(tm_year=2019, tm_mon=7, tm_mday=26, tm_hour=8, tm_min=59, tm_sec=59, tm_wday=4, tm_yday=207, tm_isdst=0)

time模块的常用方法

方法描述
time.localtime([sec])将一个时间戳转化为一个结构化时间
time.gmtime([sec])将一个时间戳转化为UTC时区(0时区),也是结构化时间
time.time()返回当前的时间戳
time.mktime(t)讲time.struct_time转化为时间戳
time.sleep(sec)将线程推迟指定的时间允许,单位(s)
time.asctime([t])把表时间的元组或struct_time表示为:‘’周几 月 日 时分秒 年‘’
time.ctime([t])把一个时间戳转化为time.asctime()的形式,未传参数,默认time.time()
time.strftime(format[,t])把一个代表时间的元组或struct_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=21, tm_sec=4, 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=21, tm_sec=4, tm_wday=4, tm_yday=207, tm_isdst=0)

  • 结构化时间—>时间戳
>>> tp_struct=time.localtime()
>>> time.mktime(tp_struct)
1564104178.0

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

  • 结构化时间—>字符串时间
>>> tp_struct=time.localtime()
>>> time.strftime("%Y-%m-%d %X",tp_struct)
'2019-07-26 09:22:58'

  • 字符串时间—>结构化时间
>>> time.strptime("2019-7-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_struct=time.localtime()
>>> time.asctime(tp_struct)
'Fri Jul 26 09:22:58 2019'
>>> time.asctime()
'Fri Jul 26 09:46:40 2019'

时间戳和字符串的转化

>>> time.ctime()
'Fri Jul 26 09:52:07 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与时区有关的信息
import datetime
>>> datetime.datetime.now()
datetime.datetime(2019, 7, 26, 10, 3, 14, 602496)
>>> print(datetime.datetime.now())
2019-07-26 10:03:44.593720
>>> print(datetime.datetime.now().date())
2019-07-26
>>> print(datetime.datetime.now().time())
10:04:24.207548
>>> print(datetime.datetime.now()+datetime.timedelta(-1))#当前时间减一天
2019-07-25 10:05:49.981142
>>> print(datetime.datetime.now()+datetime.timedelta(hours=-1))#减一小时
2019-07-26 09:06:31.960906

sys模块

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

处理命令行参数

py文件中

import sys

print("Script name is:",sys.argv[0])

if len(sys.argv)>1:
    print("There are ",len(sys.argv)-1,"atguments")
    for i in sys.argv[1:]:
        print(i)
else:
    print("There are no arguments")

命令行

>>>python day_02.py aa bb cc
Script name is: day_02.py
There are  3 atguments
aa
bb
cc

序列化模块

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

Python中叫pickling。

为什么要使用序列化

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

[外链图片转存失败(img-AUxt0Ouf-1564323556185)(C:\Users\ou\Desktop\20190727103435129.png)]

json

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

json数据类型python数据类型
{}dict
[]list
“string”str
123.56int/float
true/falseTrue/False
nullNone
json优缺点:
  • 优点:所有的数据类型是各语言通用的。

  • 缺点:

    • json支持的数据类型比较少

      • 只支持列表,字典,数值,字符串以及布尔值
    • 它对数据的要求十分严格

      • 比方说字典中的key必须是字符串
查看json的方法和属性

dir()

四个功能
  • 序列化

    • dumps
    • dump
  • 反序列化

    • loads
    • load
>>> import json
>>> dic={"name":"College","age":20,"type":"University"}
>>> sr_dic=json.dumps(dic)# 序列化的过程,将字典转化为一个字符串
>>> type(sr_dic)
<class 'str'>
>>> sr_dic
'{"name": "College", "age": 20, "type": "University"}'
>>> dic
{'name': 'College', 'age': 20, 'type': 'University'}
>>> dic={"name":"College","age":20,"type":"University",2:0
>>> sr_dic=json.dumps(dic)
>>> sr_dic}# key被强转为字符串
'{"name": "College", "age": 20, "type": "University", "2": 0}'
>>> dic2=json.loads(sr_dic)	# 反序列化
>>> dic2
{'name': 'College', 'age': 20, 'type': 'University', '2': 0}
>>> dic3=json.loads(dic)    
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "F:\64 python 36\lib\json\__init__.py", line 348, in loads
    'not {!r}'.format(s.__class__.__name__))
TypeError: the JSON object must be str, bytes or bytearray, not 'dict'
#假如是元组,序列化时强转为列表;若元组作为字典的key,序列化时报错
>>> tuple1=(0,1,3)
>>> dic4=json.dumps(tuple1)
>>> dic4
'[0, 1, 3]'
>>> dic={tuple1:2}
>>> dic5=json.dumps(dic)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "F:\64 python 36\lib\json\__init__.py", line 231, in dumps
    return _default_encoder.encode(obj)
  File "F:\64 python 36\lib\json\encoder.py", line 199, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "F:\64 python 36\lib\json\encoder.py", line 257, in iterencode
    return _iterencode(o, 0)
TypeError: keys must be a string

import json
dict1={"name":"College","age":20,"type":"University",2:0}

with open('dump_json','w')as f:
    json.dump(dict1,f)#dump方法可以接受一个文件句柄。直接将字典-->字符串,写入文件
with open('dump_json')as f:
    ret=json.load(f)
    print((ret,type(ret)))
({'name': 'College', 'age': 20, 'type': 'University', '2': 0}, <class 'dict'>)
#想要读取多条就要在写入时写入换行
with open('dump_json','a')as f:
    json.dump(dict1,f)
    f.write('\n')
 #多写入几次后
with open('dump_json')as f:
    for i in f:
        ret=json.loads(i)
        print((ret))
 
#{'name': 'College', 'age': 20, 'type': 'University', '2': 0}
#{'name': 'College', 'age': 20, 'type': 'University', '2': 0}
#{'name': 'College', 'age': 20, 'type': 'University', '2': 0}
#{'name': 'College', 'age': 20, 'type': 'University', '2': 0}
   

pickle

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

pickle 优缺点

  • 优点

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

    • 只支持python
四个功能
  • 序列化

    • dumps
    • dump
  • 反序列化

    • loads
    • load
import pickle
dict1={"name":"College","age":20,"type":"University",2:0}
dict2=pickle.dumps(dict1)
print(type(dict2))
#	<class 'bytes'>
dict3=pickle.loads(dict2)
print(type(dict3))
#	<class 'dict'>

缺点
  • 只支持python

  • 缺点

    • 只支持python
四个功能
  • 序列化

    • dumps
    • dump
  • 反序列化

    • loads
    • load
import pickle
dict1={"name":"College","age":20,"type":"University",2:0}
dict2=pickle.dumps(dict1)
print(type(dict2))
#	<class 'bytes'>
dict3=pickle.loads(dict2)
print(type(dict3))
#	<class 'dict'>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值