zoukankan      html  css  js  c++  java
  • python-time模块--pickle模块

    time 模块

    为什么要有time模块,time模块有什么用?

    time模块用来打印时间,并且有暂停程序的功能,需要时间的地方就要调用。

    time模块的三种格式

    时间戳(timestamp)

    时间戳表示的是从1970年1月1日0:00:00开始按秒计算的偏移量

    import time
    print(time.time())
    
    1560166598.8710632
    

    格式化时间(需要自己定义格式)

    格式化时间就是普通字符串格式的时间表示方式,需要自己定义格式。

    print(time.strftime('%Y-%m-%d'))
    2019-06-10
    

    结构化时间(struct—time)

    print(time.localtime()) # 北京时间
    time.struct_time(tm_year=2019, tm_mon=6, tm_mday=10, tm_hour=19, tm_min=42, tm_sec=45, tm_wday=0, tm_yday=161, tm_isdst=0)
    
    print(time.gmtime()) # 格林威治时间(时间标准时间)
    time.struct_time(tm_year=2019, tm_mon=6, tm_mday=10, tm_hour=11, tm_min=43, tm_sec=46, tm_wday=0, tm_yday=161, tm_isdst=0)
    

    结构化时间转换为格式化时间

    struct_time = time.localtime()
    print(time.strftime('%Y-%m-%d',struct_time))
    
    2019-06-10
    

    结构化时间转换为时间戳

    print(time.mktime(struct_time))
    1560167473.0
    

    时间戳转换成结构化时间

    stamp_time = time.time()
    print(time.localtime(stamp_time))
    
    time.struct_time(tm_year=2019, tm_mon=6, tm_mday=10, tm_hour=19, tm_min=55, tm_sec=25, tm_wday=0, tm_yday=161, tm_isdst=0)
    

    格式化时间转换成结构化时间

    print(time.strptime('2019-06-01 12:00:00','%Y-%m-%d %X'))
    
    time.struct_time(tm_year=2019, tm_mon=6, tm_mday=1, tm_hour=12, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=152, tm_isdst=-1)
    

    程序延时

    time.sleep(1)
    

    datetime 模块

    为什么要有datetime模块,有什么用?

    datetime模块能进行时间的加减

    获取当前时间

    import datetime
    
    now = datetime.datetime.now()
    print(now)
    
    2019-06-10 20:05:05.697198
    

    时间的加减

    print(now + datetime.timedelta(3))  # 3代表的参数表示天数,且里面的参数只能是天,不能进行年和月的加减
    
    print(now + datetime.timedelta(-3))
    
    2019-06-13 20:06:34.748685
    2019-06-07 20:09:11.633673
    

    时间的年月日的修改

    print(now.replace(year=2010,month=6,day=8,hour=19,minute=10,second=11))
    
    2010-06-08 19:10:11.641058
    

    random 模块

    为什么要有random模块,有什么用?

    • 打印(0,1)之间的数, 不会取0和1
    print(random.random())
    0.9112520136212495
    
    • 打印[n,m]的整数 # 会去n和m

      print(random.randint(1,5))
      
      1
      
    • 打印(n,m)的小数

      print(random.uniform(1,5))
      
      4.66308974253497
      
    • 打印[n,m)的整数 取头不取尾

      print(random.randrange(1,3))
      
      1
      

      从容器中随机选择一个(牢记,经常用) 抽奖程序就是基于这个基础做出来的

      res = random.choices([1,4,7,9])
      print(res)
      
      [4]
      

      抽奖实例:

      count =0
      while True:
          res = random.choices([1000,22,333,44])
          count +=500
          if count == 3000:
              print(f'恭喜你获得1000元大奖')
          else:
              if res ==1000:
                  print('再来一次!')
              else:
                  print(f'恭喜你获得{res}')
      

    从容器中随机选择多个(牢记,经常用)

    ```python
    print(random.sample([1,2,'w','t'],2))
    [1, 'w']
    ```
    

    打乱容器顺序(牢记)

    lis = [1,2,3,4]
    random.shuffle(lis)
    print(lis)
    
    [3, 1, 2, 4]
    

    os模块(与操作系统交互)

    os模块与操作系统交互,在python中进行文件操作

    • 创建文件夹 os.mkdir()
    • 删除文件夹,递归往上删除空文件夹 os.removedirs()
    • 删除一个空文件夹 os.rmdir()
    • 列出文件夹所有文件名和隐藏文件名 os.listdir()
    • 删除文件 os.remove()
    • 重命名文件名 os.rename()
    • 打印环境变量 os.envirom()
    • 添加环境变量 os.path.dirname(‘程序执行文件所在的文件夹路径’)重点
    • 判断文件是否存在 os.path.exists()
    • 拼接文件路径(因为不同系统的路径拼接符不一样)os.path.join()
    • 计算文件大小 os.path.getsize()重点
    • 打印文件夹下所有文件夹和文件 os.walk()

    sys 模块(与python交互)

    • 查看当前文件路径 sys.argv() 重点

      print(sys.argv)
      
      ['D:/pycharm学习笔记/test1/test-6-10.py']
      
    • 获取解释器版本 sys.hexversion

      print(sys.hexversion)
      50726128
      
    • 获取当前文件导入模块的路径 sys.path 重点

      print(sys.path)
      
      ['D:\pycharm学习笔记\test1', 'D:\pycharm学习笔记', 'D:\python3\python36.zip', 'D:\python3\DLLs', 'D:\python3\lib', 'D:\python3', 'D:\python3\lib\site-packages', 'D:\pycharm\PyCharm 2018.1.4\helpers\pycharm_matplotlib_backend']
      

    json 模块 与pickle 模块

    序列化(dump)

    从内存到硬盘这个过程叫做序列化,序列化必须得规定格式

    特点:

    • 持久保存状态
    • 跨平台交互数据(但只能存dict/list/str/int/float/bool/None)
    with open('文件.json','w',encoding='utf8') as fw:
        json.dump(dict,fw)
    

    反序列化 (load)

    with open('文件.json','r',encoding='utf8') as fr:
        data = json.load(fr)
    

    pickle

    • pickle也是序列化和反序列化,json可以跨平台,只支持dict/list/str/int/float/bool/None

    • pickle支持python中任意数据类型,所以不能跨平台(不同平台的函数一定是不同的),pickle模块序列化过程是以二进制形式转换

    序列化

    with open('文件.json','wb') as fw:
        pickle.dump(dict,fw)
    

    反序列化

    with open('文件.json','rb') as fr:
        data = pickle.load(fr)
    
  • 相关阅读:
    window.location.href的使用方法
    hdu 2850 Load Balancing (优先队列 + 贪心)
    几种常见模式识别算法整理和总结
    【DateStructure】 Charnming usages of Map collection in Java
    编写你自己的单点登录(SSO)服务
    微软历史最高市值是多少?
    Tomcat配置一个ip绑定多个域名
    递归算法:求序列的全排列
    SMTP协议分析
    platform_device与platform_driver
  • 原文地址:https://www.cnblogs.com/raynduan/p/11079149.html
Copyright © 2011-2022 走看看