• 环境小硕的转行之路-12-序列化和反序列化、模块的引用


    利用json和pickle模块序列化代码


    序列化定义:把内存的数据对象变成字符串了

    序列化


    def sayhi(name):
        print('hello',name)
    info = {
        'name':'negu',
        'age':22
        # 'func':sayhi()
    }
    '''法1'''
    f = open('test.text','w')
    f.write(str(info))
    f.close()
    '''法2'''
    import json#只能处理简单的数据类型:str、list、dict。所以函数不行。主要用于不同语言之间进行数据交互(例如python和java的类不同就不能交换,所以只能简单)。
    f = open('test.text','w')
    f.write(json.dumps(info))
    print(json.dumps(info))#输出<class 'str'> {"name": "negu", "age": 22}
    f.close()
    '''法3'''
    import pickle#和json类似,但有自己的一套语法规则。这样写打开text文件乱码。
    f = open('test.text','wb')#需要以二进制读取模式打开它
    f.write(pickle.dumps(info))#输出一堆二进制数
    print(pickle.dumps(info))
    f.close()
    #pickle可以传入函数,但是在反序列化的文件中必须定义此函数。可以在反序列化文件中改变函数内容,反序列化后的代码跟着改变。
    

    反序列化


    '''法2对应'''
    import  json
    f = open('test.text','r')
    data = json.loads(f.read())#read函数:从文件开头读到结尾
    print(data['age'])#输出22
    '''法3对应'''
        import  pickle
    def sayhi(name):
        return print('hello2',name)#此时执行sayhi 输出hello2
    f = open('test.text','rb')
    data = pickle.load(f)#data = pickle.loads(f.read())可以相互替换json模块同理。
    print(data['age'],data['func']('negu'))
    

    不同文件之间自建模块的引用


    import os
    import sys
    
    print(1,__file__)#获取当前文件的路径(pycharm自作主张加的),在终端设备上只会显示文件名.
    print(2,os.__file__)#os模块储存的路径
    #os.path.abspath()函数:获取文件的绝对路径
    #os.path.dir()函数:获取文件的上一级路径
    os.path.dirname(os.path.dirname(os.path.abspath(__file__))))#当前程序返回两级目录
    base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    sys.path.append(base_dir)#sys.path 返回的是一个列表,此列表包含了已经添加到系统的环境变量了,当我们要添加自己的搜索目录时,可以通过列表的append()方法。
    import day1,day2,day3
    from day1 import login
    login
    
  • 相关阅读:
    修改ssh默认端口
    网络配置
    nginx 反向代理
    nginx web 服务
    小白日记22:kali渗透测试之提权(二)--抓包嗅探
    小白日记21:kali渗透测试之提权(一)--本地提权
    小白日记20:kali渗透测试之后渗透测试阶段(一)--上传工具
    小白日记19:kali渗透测试之选择和修改EXP
    小白日记18:kali渗透测试之缓冲区溢出实例(二)--Linux,穿越火线1.9.0
    小白日记17:kali渗透测试之缓冲区溢出实例-windows,POP3,SLmail
  • 原文地址:https://www.cnblogs.com/negu/p/11355312.html
Copyright © 2020-2023  润新知