• json ,pickle


    import settings
    import uuid
    import json
    import os
    import json as default_json
    from json.encoder import JSONEncoder
    
    class MyJsonEncoder(JSONEncoder):
        def default(self, o):
            if isinstance(o,MySQL):
                return o.__dict__
            return JSONEncoder.default(self,o)
    class MyJson(object):
        @staticmethod
        def dump(obj, fp):
            return default_json.dump(obj, fp,cls=MyJsonEncoder)      #自定义Json,使json 可以处理MySQL类的对象
    
    class MySQL:
        def __init__(self,host,port):
            self.id=self.create_id()
            self.host=host
            self.port=port
        def save(self):
            if not self.is_exists:
                raise PermissionError("yi cui zai ")
            file_path=r'%s%s%s'%(settings.DB_PATH,os.sep,self.id)
            # pickle.dump(self,open(file_path,'wb'))
            # from lib.MYJSON import MyJson          出错
    Python中可能会遇到 cannot import name ‘XXX’ 错误,
    其实这有可能出现再模块导入的顺序问题上,
    比如:在A文件头执行到语句 from B import XXX ,
    程序马上就会转到B文件中去,从头到尾顺序寻找B文件中的XXX函数,
    而A文件就暂停执行,直到把XXX函数复制到内存中,
    但B文件中的文件头可能也有导入,
    如果B文件头中又导入了A文件中的函数,
    由于XXX函数还没有被复制。
    所以于A文件因为暂停执行而无法导入,就会出现上面的错误了。

    MyJson.dump(self, open(file_path, 'w')) #self 就是一个MYSQL 的对相 @property def is_exists(self): tag=True files=os.listdir(settings.DB_PATH) for file in files: file_abspath=r'%s%s%s'%(settings.DB_PATH,os.sep,file) obj=json.load(open(file_abspath,'r')) # try: # obj=pickle.load(open(file_abspath,'rb')) # except EOFError: # return False if obj['host'] == self.host and obj['port'] == self.port: tag=False break return tag @staticmethod def get_obj_by_id(id): file_path=r'%s%s%s'%(settings.DB_PATH,os.sep,id) return json.load(open(file_path,'r')) # return pickle.load(open(file_path,'rb')) @staticmethod def create_id(): return str(uuid.uuid1()) @classmethod def from_conf(cls): return cls(settings.HOST,settings.PORT) # print(MySQL.from_conf()) # conn=MySQL.from_conf() # print(type(conn)) # conn.save() # res=conn.get_obj_by_id('ea6ebaf0-e68e-11e8-89fa-98541bbe06e4') # print(res.host,res.port) obj=MySQL('127.0.0.1','8090') # print(obj,type(obj)) obj.save()
  • 相关阅读:
    webstorm & phpstorm破解
    JSON和JSONP
    angular.extend(dst, src)对象拓展
    angular.foreach 循环方法使用指南
    angular 指令@、=、&的用法和区别
    angular directive指令相互独立
    angular directive指令的复用
    对apply和call的理解
    图片上传
    vue 路由缓存
  • 原文地址:https://www.cnblogs.com/wuxi9864/p/9951196.html
Copyright © 2020-2023  润新知