美文网首页
2018-09-03 Day11-文件操作和异常捕获

2018-09-03 Day11-文件操作和异常捕获

作者: Deathfeeling | 来源:发表于2018-09-03 16:11 被阅读0次

    一、文件操作

    1、基本过程:

    打开文件 --- 操作 --- 关闭文件
    open:(路径,打开方式,encoding=编码方式)
    路径:绝对路径(了解),相对路径: ./ , ../ , .../
    打开方式:r, rb,w,wb,a
    注意:路径不存在的时候,读的形式打开会报错,写的形式打开会自动创建文件。
    设置编码方式:utf-8 , gbk
    注意:如果以二进制的方式打开文件(rb,wb),不能设置编码方式。

    2、文件的读和写:

    read()、readline() -- 读
    write() -- 写

    3、关闭

    close() ---- 良好的习惯

    4、打开文件和关闭文件的简写方式(常用的)
    #文件打开操作完成后,会自动关闭文件
    with open() as 文件变量名:
      文件操作
    
    • 下载文件的本质就是从网络上下载二进制数据,再写入本地文件。
      二进制文件(图片、视频等)只能用二进制方式(rb、wb)打开。


    二、json文件

    json是有特定格式的一种文本形式,它有自己的语法。(.json文件)

    1、json格式对应的数据类型及其表现。
    • 一个json文件中只能存一个数据,这个数据的类型必须是以下类型中的一个,并且只能用双引号。
      对象(object)----- {"a":10,"b":[1,2]} 相当于Python的字典
      数组(array)----- [100,"abc",true,[1,2]] 相当于Python的列表
      数字(number)----- 0,100,3.14
      字符串(string)----- "abc"
      True ----- true/false
      null ----- null(空值)

    json模块是python中内置的,专门处理json数据的一个模块。

    import json
    with open('./files/json1.json','r',encoding='utf-8') as f:
      content = json1.json
      
    
    2、python 对 json 数据的支持

    A、json --> python
    (1)、json.load(json文件对象):以json的格式,获取文件中的内容。将内容转换成相应的python数据。
    (2)、json.loads(json格式内容的字符串,编码方式):将json格式的字符串转换成python对应的数据。

    json ---> python
    对象 ---> 字典
    数组 ---> 列表
    数字 ---> 整数、浮点数
    true,false ---> 布尔(True,False)
    null ---> None
    

    B、python --> json

    python ---> json
    字典 ---> 对象
    列表、元组 ---> 数组
    整数、浮点数 ---> 数字
    True,False ---> true,false
    字符串 ---> 字符串(双引号)
    None ---> null
    

    (1)、json.dump(写入json文件中的python数据,json对象)
    (2)、json.dumps(转换成json格式字符串的python数据)

    3.异常捕获

    程序出现某种异常,但是不想因为这个异常而让程序崩溃。这个时候就可以使用异常捕获机制。

    • 执行过程:依次执行try后面的代码块,一旦遇到异常,就马上执行except后面的代码块。执行完后再执行其他的代码。
      如果try里面的代码块没有异常,就不执行except后面的代码,而执行其他的代码。

    形式一(捕获所有异常)

    try:
      需要捕获异常的代码块(可能会出现异常的代码块)
    except:
      出现异常后执行的代码
    
    a = [1,2,3,5]
    try:
        print(a[5])
    except:
        print('捕获到异常')
    

    形式二(捕获指定类型)

    try:
      需要捕获异常的代码块(可能会出现异常的代码块)
    except 错误类型:
      出现异常后执行的代码
    
    a = [1,2,3,5]
    try:
        print(a[5])
    except IndexError:
        print('捕获到异常')
    
    a = [1,2,3,5]
    try:
        print(a[5])
    except (IndexError,KeyError):
        print('捕获到异常')
    

    形式三(捕获到异常进行多种处理)

    try:
      需要捕获的异常的代码块(可能会出现异常的代码块)
    except 错误类型1:
      执行语句1
    except 错误类型2:
      执行语句2
    '''
    还是只会捕获到一个异常
    '''
    

    形式四(finally:不管有没有异常,即使崩溃,也会执行finally里面的的东西。)

    try:
      需要捕获的异常的代码块(可能会出现异常的代码块)
    except 错误类型1:
      执行语句1
    except 错误类型2:
      执行语句2
    finally:
      执行语句   
    '''
    finally:不管有没有异常,都会执行finally里面的的东西。
    '''
    def user_input():
        try:
            numb1 = float(input('请输入除数:'))
            numb2 = float(input('请输入被除数:'))
        except ValueError:
            print('输入类型错误,请输入数字!!')
            user_input()
        test(numb1,numb2)
    
    def test(n,y):
        try:
            print('%f / %f = %.2f' % (n,y,n/y))
        except ZeroDivisionError:
            print('被除数不能为0')
            user_input()
        finally:
            print('哈哈哈哈哈哈')
    user_input()
    
    4、抛出异常(以后补充)

    raise 异常类型

    相关文章

      网友评论

          本文标题:2018-09-03 Day11-文件操作和异常捕获

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