zoukankan      html  css  js  c++  java
  • 【0806 | Day 9】异常处理/基本的文件操作

    一、异常处理

    异常即报错,可分为语法异常和逻辑异常

    1. 语法异常

    举个栗子

    if #报错 syntaxerror
    0 = 1 #报错 syntaxerror
    ...

    正经地举个栗子

    print(1)
    try:
        num = input('请输入: ')  #1
        dic = {'0':1}           #2
        print(dic[num])         #3
        
        print(3)                #4
        1 / int(num)            #5
        print(4)                #6
        
    except Exception as e:  
        #Exception包括'ZerodivisionError'和'Keyerror'
        #异常捕捉
        print('e:',e)           #7
    print(2)                    #8
    #第一种:输入0
    1
    请输入: 0
    1   #2 & #3
    3   #4
    #5 & #6不执行
    e: division by zero #7
    2   #8
    #第二种:输入非0
    #2 & #3不执行
    1   
    请输入: 2
    e: '2'  #7 返回输入值(即不在字典内)
    2   #8

    2. 逻辑异常

    举个栗子

    1/0 #报错,逻辑异常有多种形式

    正经地举个栗子

    print(1)
    try:        #尝试一下
        print(3)    #执行/自上而下
        1/0     #报错不影响
        print(4)    #不执行/自上而下
    except:     #除此之外
        pass
    print(2)
    ​
    #1
    #3
    #2

    二、基本的文件操作

    1、打开文件的三种方式

    #第一步,找到文件路径
    path = r'D:fxyadela上课练习	est.py'  #绝对路径
    path = r'test.py'   #相对路径
    #第二步,双击打开
    f = open(path,'r或w')
    print(f)
    #第三步,看文件
    data = f.read()
    print(data)
    #第四步,写文件
    f.write('nick young')
    #第五步,关闭文件
    f.close()
    #只写,返回地址并在test.py中输入'Nick Young'
    ​
    path = r'D:fxyadela上课练习	est.py'  #绝对路径
    f = open(path,'w')
    print(f)
    f.write('nick young')
    f.close()
    ​
    #<_io.TextIOWrapper name='D:\fxyadela\上课练习\test.py' mode='w' encoding='cp936'>
    #Nick Young #在test.py中
    #只读,返回地址和test.py中的字符
    #假设test.py中输入'Nick Young'
    ​
    path = r'D:fxyadela上课练习	est.py'  #绝对路径
    f = open(path,'r')
    print(f)
    data = f.read()
    print(data)
    f.close()
    ​
    #<_io.TextIOWrapper name='D:\fxyadela\上课练习\test.py' mode='r' encoding='cp936'>
    #Nick Young

    绝对路径: 从根目录开始找

    相对路径: 当前执行文件所在的文件夹开始找

     

    2、早期读写共同执行时存在的问题

    1.文件既可读又可写,假设文件内容为1
    2.系统在1后面追加2(需要10s)
    3.在这10s内,系统读文件需要5秒,此时读出只有1,系统会写2
    4.等读完文件,再写完2,此时系统10s结束,已经变为12
    5.则两者12相遇,报错

    注意: 所以,只读or只写

    3、关闭文件的注意事项

    f = open('test.py','r')
    data = f.read()
    print(data)
    del f   #不关闭操作系统,只删除f引用及在内存中的占用
    ​
    f = open('test.py','r')
    data = f.read()
    try1/0
        print(data)
    except Exception as e:
        print('e:',e)
    finally:
        f.close()   #既删除f引用,又会命令操作系统关闭对外存文件的占用

    4.TODO用法

    if True:
        #TODO:猜年龄逻辑运算(类似于索引)
        pass

     

     

  • 相关阅读:
    实现基于C++的动态事件机制(转)
    D3D HLSL 一段代码注释
    directx加载ms3d动画模型
    几种空间分割算法研究之bsp
    IxEngine开发笔记
    使用UVAtlas技术管理贴图
    八叉树
    c#调用C++写的dll导出类,包含继承,重载等详细介绍(转载)
    给自己毕业前的一点任务
    大小端问题
  • 原文地址:https://www.cnblogs.com/fxyadela/p/11311072.html
Copyright © 2011-2022 走看看