20/01/26 Python基础知识学习(10)

对象持久化

  • 应用场景
    序列化与反序列化:将当前正在计算的某个数据结果、进度或状态存储到某些物理没接上;未来在某一特定情境下将存储的数据还原到内存里去。
  • 技术
  1. 扁平文件
  • 文本文件
    scores=[99,88,77,66]
    def write_score():
    	with open('datalist.txt','w',ecoding='utf8') as f:
    		f.write(string(scores))
    	print('文件写入完成...')
    def read_score:
    	with open('datalist.txt','r',ecoding='utf8') as f:
    		lst=eval(f.read())  #将传递的字符串转换为python表达式 
    	```
    	
    
  1. pickle
    封装了一系列的方法接口,可以将python中原有的类型对象序列化为字符串或本地的文件
  • 序列化为字符串
    import pickle
    person={'name':'Tom','age':20}
    s=pickle.dumps(person) #将python类型序列化为字节字符串
    p=picle.loads(s) #从字符串反序列化对象(保留类型特征)
    
  • 序列化对象到文件
    pickle.dump(person,open('pickle_db','wb'))   #.dump(obj,file)
    p=pickle.load(open('pickle_db','rb'))  #.load(file)
    
  1. shelve - 特征:将多个对象存储到一个文件中,用类似字典表的形式用键值来访问不同的对象

    import shelve
    scores=[99,88,77]
    student={'name':'Tom','age':20}
    db=shelve.open('shelve_student')
    db['s']=student
    db['scores']=scores
    # 调用
    db['s']
    # 删除文件
    del db['scores']
    
  2. 数据库

  3. ORM

字符串

  • 概述
    • 类型
      • str 字符串
      • bytes 字节
      • bytearray 字节数组
    • 字符编码架构
      • 字符集:赋值一个编码到某个字符,以便在内存中表示
      • 编码 Encoding: 转换字符到原始字节形式
      • 解码 Decoding: 依据编码名称转换原始字节到字符的过程
    • 字符串存储
      • 编码只作用于存储或中间媒介转换时
      • 内存中总是存储解码以后的文本
  • 字符编码
    • ASCII码 美国标准信息交换代码(数字/字母/标点/换行…)
      存储在一个byte 0-127
    • Latin-1
      存储在一个byte 128-255
    • UTF-8 保证兼容性的同时最大程度减小存储体积
      可变字节:0-127使用单字节,128-2047 双字节存储,>2047 3-4byte
    • UTF-16
      2 byte 存储字符(另加2byte作为标识)
    • UTF-32
      4 byte
  • 内置函数
    • ord(‘A’) > 65 获取字符代码点
    • chr(104) > h 获取当前代码点对应的字符
    • str.encode(‘编码’) 将特定字符编码
    • bytes.decode(‘编码’) 将字符编码解码为字符文本
    • sys.getdefaultencoding() 查看系统默认编码格式
  • 类型转换
    • bytes
      手动声明 b’ ’
      字符串编码 str.encode()
      构造函数 bytes(str,‘编码’) 将字符串转换为编码(不能超过256,默认情况下只处理一个字节)
    • bytearray - 可以运用list的类似性质
      bytearray(‘字节’,‘编码’)
      .decode() 解码为字符串
  • BOM处理 字节顺序标记
    open(‘data.txt’,‘r|w’,encoding=‘utf-8-sig’)
发布了10 篇原创文章 · 获赞 0 · 访问量 139

猜你喜欢

转载自blog.csdn.net/weixin_44602323/article/details/104089111