美文网首页
json数据,异常捕获、抛出异常

json数据,异常捕获、抛出异常

作者: 222AblackA | 来源:发表于2018-12-08 11:18 被阅读0次

    一.json文件

    1.json数据:一种数据格式,满足这种格式的数据就是json数据

    json文件:文件后缀名是.json,并且文件中的内容满足json格式
    

    2.json格式

    a.一个json中只有一个数据(没有数据也是错)

    b.并且这个数据是json支持的数据类型

    json支持的数据类型:

      数字类型 --  包含所有的数字,包括整数和小数,负数等(100, 1.2, -4等)
      字符串  --   使用双引号括起来的字符集(''1323'',''dsagg'',''$%^r''等)
      布尔   --    true 和 false
      数组  --  相当于python中的列表,使用中括号括起来,括号里面是json支持的任意类型数据
                     ([''abc'',''sd222'',333,true])
      字典  --   使用大括号括起来,括号里面 是键值对。键一般是字符串,值是json支持的任意类型数据
      特殊值 -- null(相当于None)
    

    3.python中有一个内置的模块叫json,用来对json数据处理:json 导入json模块:import json

    a.将json数据转换成python数据

    loads(字符串) -- 将json格式的数据 转换成python对应的数据

    注意 : 这个字符串必须是json格式数据(外层引号里面的数据是json)

            数据转换:
            json数据 :                 python数据:
            数字类型           -->       整型/浮点型
            字符串(双引号)   -->       字符串(单引号)   
            布尔(true/false) -->       布尔(True/False)
            数组               -->       列表
            字典               -->       字典
            null               -->       None
    
        import json
        #json.loads('''adc''')  #  去掉单引号后的数据必须是json数据
        #json.loads('100')      #  去掉单引号后的数据必须是json数据
    

    b.将python数据转换成json数据

    dumps(数据) -- 将python数据转换成符合json格式的字符串(字符串里面的内容是相应的数据类型)

    注意:最终json数据结果是字符串,字符串里面的内容是json格式数据

         数据转换:
         python数据 :              json数据(字符串):
         整型/浮点型        -->       数字类型   
         字符串(单引号)    -->       字符串(双引号)   
         布尔(True/False) -->       布尔(true/false)
         列表/元祖          -->       数组
         字典               -->       字典
         None              -->       null
    
        
    #   添加学生信息(姓名,年龄,电话),添加完成后,将数据保存到json文件中
    #   并且上次添加的信息不会删除,下次在添加实在上次基础上添加
        with open('json2.json',encoding='utf-8') as f:
            xueshen=list(f.read())
        while True:
                stu = {'name:':0,'age:':0,'num:':0}
                stu['name:'] = input('请输入姓名:')
                stu['age:'] = input('请输入年龄:')
                stu['num:'] = input('请输入电话:')
                xueshen.append(stu)
                n = input('是否继续添加:')
                if n == '继续':
                    continue
                else :
                    break
        with open('json2.json','w',encoding='utf-8') as f:
            c = json.dumps(xueshen)
            f.write(c)
    

    4.json文件操作相关方法

    json.load(文件对象) -- 将文件对象中的数据读出来,并且转成python对应的数据

    json.dump(obj,文件对象) -- 将obj数据转成json格式字符串,并且写入到文件对象中

        print('================')
        with open('test.txt', encoding='utf-8') as f:
            content = json.load(f)
            print(content, type(content), sep='\n')
        
        
        # with open('new.json', 'w', encoding='utf-8') as f:
        #     json.dump([1, 2, 3], f)
        
        
        def yt_dump(obj, file):
            with open(file, 'w', encoding='utf-8') as f:
                strstr = json.dumps(obj)
                f.write(strstr)
        
        
        yt_dump(['a', 'b', 'c'], 'new.json')
    

    二.异常捕获

    1.异常:程序运行当中出现错误,也叫出现异常

    2.异常捕获:让本来会出现异常的位置不出现异常,而是自己去处理这个异常的情况

    3.如何捕获异常:

    a.(捕获所有异常)语法:

            try :
              代码段1
            except:
              代码段2
    
        执行过程:执行代码段1,如果代码段1出现异常,首先不崩溃,而是马上执行代码段2(一遇到异常代码马上执行代码段2)
                   如果代码段1没有出现异常,不会执行代码段2
    

    b.(捕获指定异常)语法:

        try :
           代码段1
        except 错误类型名 :
           代码段2
    
    执行过程:当代码段1中出现指定的错误类型后,才执行代码段2
    

    c. (同时捕获多个异常,对不同异常做出相同反应)语法:

        try :
          代码段1
        except (错误类型1,错误类型2,错误类型3...):
          代码段2
          
        执行过程: 执行代码段1,如果代码段1出现指定异常中的某一种,不崩溃,执行代码段2
    
            try:
                print([1,2,3][10])
            except :
                print('出现异常')
            print('=======')
            
            try :
                print([1,2,3][5])
                print(int('as'))
            except (ImportError,IndexError,KeyError,ValueError,LookupError):
                print('出现多种异常中的一种')
    

    d. 同时捕获多个异常,对不同的异常做出不同的反应

        try :
          代码段1
        except 错误类型1:
           代码段2
        except 错误类型2:
           代码段3
        except 错误类型3:
           代码段4
        ...
           
        '''
        '''
    

    4. try - except - finally

        try :
          代码段1
        except :
          代码段2
        finally :
          代码段3 (一般都是写数据保存类的代码,保存程序崩溃时的数据状态(写遗书))
          
        执行过程:代码段1和2无论会不会执行,代码段3无论如何都会执行
    
        try :
            print([1,2,3][11])
        except ValueError:
            print('下标越界')
        finally:
            print('finally!里面的代码段')
        print('最后。。。')
    
        #  输入成绩,直到输入的数据输入正确为止
        while True:
            try :
                score= float(input('请输入成绩:'))
                break
            except ValueError :
                print('输入有误!')
                #score = float(input('请输入成绩:'))
        # 封装一个函数 ,功能是获取指定文件中的内容(普通文本文件)
        def get_file(files):
               try :
                 with open('files',encoding='utf-8') as f:
                     coent =f.read()
                     return coent
               except FileNotFoundError:
                   print('文件路径有误!')
                   return ''
    

    三.抛出异常:主动让程序出现异常

    语法:

        raise 错误类型 --  程序执行到raise的时候直接抛出异常
        注意: 错误类型必须是一个类,并且这个类是Exception的子类

    相关文章

      网友评论

          本文标题:json数据,异常捕获、抛出异常

          本文链接:https://www.haomeiwen.com/subject/exfqhqtx.html