zoukankan      html  css  js  c++  java
  • 序列化模块/模块/包

    1 序列指的是字符串数据类型

    在写文件以及网络传输的情况下必须要转成字符串,即数据存储的过程 

    从字符串转化为元数据类的过程称之为反序列化

    json模块
    pickle模块
    shelve模块

    1.1 pickle所有的python的数据类型都可以转化成字符串形式
    是python特有的,只有python能理解.
    可以直接把对象写进去
    读出来直接当对象用


    pickle.dumps 拍散收到字节
    pickle.loads 还原字节

    pickle.dump 去掉s,就把打散了的写进文件,不是给人看的,是给计算机看的
    pickle.load  读出文件的对象
    连读两次读就可以读出来两次的内容,写也是
    但是就存在一个问题,读的时候不知道里面有多少个,超出即报错,所以使用

    while1:
           try:
                 读
          expect  Exception:
                break

    完美解决方案:
    把多个都存在一个列表后再序列化,完事读出来再遍历

    1.2  json 是一种通用的序列化格式,多种语言通用
    由于其通用性,限制了不是所有的数据类都能够转化成字符串

    json 可以认为是字典,但存在不同:TF小写,外加一个null=None

    区别的意思是转化成的字符串会存在两种方式间的这三个不同

    .dumps(,ensure_ascii=False)就可以解决原类型内有中文的问题了,    此时的内容人是可以看懂的
    此时收到的是一个字符换类型,转化为bytes即可传输,.encode('utf-8')
    如果写文件去的话,只能放一个对象,多个则套个列表的外壳

    2 模块
    找到模块,创建这个模块的命名空间,把文件中的变量名和函数名命名空间里
    不会重复导入
    inport demo   的方式会建立一个独立空间,在程序中随意定义
    from demo import 变量名    这个变量名就对应成了这个程序的全局变量

    在哪个文件里运行,那哪个文件里的__name__就等于'__main__',
    而其他模块引入这个模块的时候,其中的__name__就等于'模块名'

    因此在模块最后,加入if __name__=='__main__':
                                   代码(在调用行绝不执行的那种)

    3 包是一个文件夹 , 在包内可以写很多个模块,!!!!不论怎么使用,启动文件必须在最外面,查找路劲都是sys.path,是随动,随启动文件所在夹而变
    导入分绝对导入和相对导入
    绝对路径一般是很安全的,
    相对导入一定要在包的外面启动,项目的框架一般内部使用相对导入

  • 相关阅读:
    kis 7.5和360似乎存在兼容性的问题,
    mysql timeout
    update users set a=1 where id in (1,2,3)这句在rails中该如何写呢
    mysql数据库 text类型的长度限制,使用change_column来进行长度的修改并不影响原有数据
    杭州的一个托管idc商
    User.find_each
    ruby 批量更新
    mongodb kt双机房灾备
    imagemagick使用
    kingdee kis
  • 原文地址:https://www.cnblogs.com/shachengcc1/p/11186316.html
Copyright © 2011-2022 走看看