example06.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. """
  2. 编码和解码 - BASE64
  3. 0-9A-Za-z+/
  4. 1100 0101 1001 0011 0111 0110
  5. 00110001 00011001 00001101 00110110
  6. base64
  7. b64encode / b64decode
  8. -------------------------------------
  9. 序列化和反序列化
  10. 序列化 - 将对象变成字节序列(bytes)或者字符序列(str) - 串行化/腌咸菜
  11. 反序列化 - 把字节序列或者字符序列还原成对象
  12. Python标准库对序列化的支持:
  13. json - 字符形式的序列化
  14. pickle - 字节形式的序列化
  15. dumps / loads
  16. """
  17. import base64
  18. import json
  19. import redis
  20. from example02 import Person
  21. class PersonJsonEncoder(json.JSONEncoder):
  22. def default(self, o):
  23. return o.__dict__
  24. def main():
  25. cli = redis.StrictRedis(host='120.77.222.217', port=6379,
  26. password='123123')
  27. data = base64.b64decode(cli.get('guido'))
  28. with open('guido2.jpg', 'wb') as file_stream:
  29. file_stream.write(data)
  30. # with open('guido.jpg', 'rb') as file_stream:
  31. # result = base64.b64encode(file_stream.read())
  32. # cli.set('guido', result)
  33. # persons = [
  34. # Person('骆昊', 39), Person('王大锤', 18),
  35. # Person('白元芳', 25), Person('狄仁杰', 37)
  36. # ]
  37. # persons = json.loads(cli.get('persons'))
  38. # print(persons)
  39. # cli.set('persons', json.dumps(persons, cls=PersonJsonEncoder))
  40. if __name__ == '__main__':
  41. main()