• Python-IO编程和异常


    Python笔记目录

    一、os模块的使用-基础操作

    1.os:全称是 operating system,可以通过os模块方便的使用操作系统相关的功能
    2.常用基础操作
    os.name:当前操作系统的名字,windows用’nt’表示,linux用’posix’表示
    os.sep:当前操作系统的路径分隔符,windows用’\\‘表示,linux用’/'表示
    os.getcwd:获取当前工作目录
    os.environ/os.getenv:获取环境变量值
    os.listdir:获取指定路径下的所有文件和目录的名字,返回数据列表

    二、os模块的使用-目录创建和删除

    1.os.mkdir方法:可以创建目录,但是只能创建路径中最后一个目录,它要求之前的目录都必须存在
    2.os.makedirs方法:可以创建目录,可以依次创建路径中不存在的目录
    3.对于mkdir和makedirs方法,如果要创建的目录已经存在,则程序会抛出FileExistsError异常,对于mkdir方法,如果之前的目录不存在,会抛出FileNotFouondError异常
    4.os.rmdir方法:可以删除指定路径的最后一层目录,但是只能删除空目录,如果待删除目录不空,程序会抛出OSError异常
    5.os.removedirs方法:可以删除指定路径的多层目录,和rmdir函数相同,只能删除空目录,不同在于,rmovedirs方法从最后一层往前删除,直到遇到不为空的目录为止,停止删除
    6.对于rmdir和removedirs方法,如果要删除的目录不存在,则程序会抛出FileNotFoundError异常

    三、os模块的使用-获取绝对路径,路径分离和连接

    1.相对路径:相对于当前工作目录指定的路径
    2.绝对路径:从最顶层目录开始所给出的完整路径
    3.'.‘表示当前目录,’…'表示上一层目录
    4.编写程序时应该尽量使用相对路径,这样程序不依赖具体的顶层目录,从而具备良好的移植性
    4.os.path.abspath方法:可以获取指定相对路径的绝对路径
    5.os.path.dirname方法:可以获取文件所在目录的路径
    6.os.path.basename方法:可以获取指定路径的文件
    7.os.path.split方法:可以将指定路径分割成路径名和最后的目录或文件名
    8.os.path.splitext方法:可以将指定路径分割成路径和文件扩展名
    9.os.path,join方法:可以将多个字符串用系统分隔符连接起来,形成新的路径

    四、os模块的使用-条件判断

    1.os.path.isfile方法:可以判断指定路径目标是否为文件
    2.os.path.isdir方法:可以判断指定路径目标是否为目录
    3.os.path.exists方法:可以判断指定路径是否存在
    4.os.path.isabs方法:可以判断指定路径是否为绝对路径

    五、文件打开和关闭

    1.程序运行时,数据都存储在内存中,当程序执行完毕后,内存中的数据将丢失。文件就是用来长期保存数据的。
    2.open方法:可以打开一个文件,语法格式为:open(filename,mode=‘r’),其中,filename是要打开文件的路径,mode是打开文件的方法,默认’r’表示以只读方法打开文件
    3.常用的打开文件方法:
    ‘r’:以只读方法打开文件,不允许写数据(read)
    ‘w’:以只写方法打开文件,不允许读数据。文件已存在内容时,会先清空文件,文件不存在时,会创建文件(write)
    ‘a’:以追加写方式打开文件,不允许读数据。文件已存在内容时,会在内容末尾追加内容,文件不存在时,会创建文件(append)
    ‘b’:以二进制方式打开文件(binary)
    ‘t’:以文本方式打开文件(text)
    ‘+’:以读写方式打开文件,可读可写
    4.文件中存在一份文件指针,指向当前要读/写的数据位置
    5.打开文件的方式可以进行组成:
    ‘r+’/‘rt+’:以文本方式打开文件,可读可写,文件不存在时会报错
    ‘w+’/‘wt+’:以文本方法打开文件,可读可写,文件已存在内容时,会先清空文件,文件不存在时,会创建文件
    ‘a+’/‘at+’:以文本,追加方式打开文件,可读可写,文件已存在内容时,会在内容末尾追加内容,文件不存在时,会创建文件
    ‘rb+’:与’r+'类似,只是用二进制打开文件
    ‘wb+’:与’w+'类似,只是用二进制打开文件
    ‘ab+’:与’a+'类似,只是用二进制打开文件
    6.close方法:可以用来关闭文件,当使用open方法打开文件后,必须使用close方法将文件关闭,来保证文件资源的及时释放
    7.with语句:可以用来让系统在文件操作完毕后自动关闭文件

    六、文件对象的write和read方法

    1.write方法:可以用来将字符串写入文件中,语法格式是 write(str),str是待写入的字符串,函数返回写入到文件的字节数
    2.write方法写入字符串时,不会自动添加换行符,如果需要加换行的话,需要人为添加换行符’\n’
    3.read方法:可以用来从文件中读取字符串,语法格式是 read(n=-1),n指定了要读取的字节数,默认-1表示一次读取文件的所有内容,函数返回从文件读取的内容

    七、文件对象的readline、readlines和seek方法

    1.readline方法:可以每次从文件中读取一行数据
    2.readlines方法:可以按行从文件读取所有数据,函数返回按行读取的数据列表,使用list(file),也可以实现和readlines方法相同的效果
    3.seek方法:可以移动文件指针,实现文件的随机读写。语法格式为:seek(pos,whence=0),其中pos是指针要移动的字节数,whence是参照位置,默认0表示以文件开头为参照位置,1表示以当前指针为参照位置,2表示以文件尾为参照位置
    4.tell方法:可以获取当前文件指针的位置
    5.文件的读写方式分为:顺序读写和随机读写
    顺序读写:按照从开头到结尾的顺序依次对数据读写
    随机读写:可以直接让文件指针指向某个位置,并对该位置的数据进行读写。因为这种方式没有固定顺序的,能做到随机指定位置操作数据,所以叫做随机读写
    6.当以文本方式打开文件后,只支持以文件开头位置作为参照位置,进行文件指针的移动。当以二进制方式打开文件后,可以支持全部的参照位置。所以通过seek方法实现的随机读写,主要用于二进制文件

    八、一维数据和二维数据

    1.一维数据:元素的值只受一种因素影响。对于一维有序数据,可以用列表存储,对于一维无序数据,可以用集合存储
    2.二维数据:元素的值受两种因素影响。可以用二维列表存储二维数据

    九、CSV操作一维、二维数据

    1.CSV:Comma-Separated Values,意思是用逗号分开的值,它是一种国际通用的一维,二维数据存储格式,其对应的文件扩展名为.csv,可以用excel软件直接打开
    2.csv文件中每一行对应一个一维数据,一维数据之间用英文半角逗号分隔,逗号两边不需要空格,对于缺失元素,也要保留逗号,使得其他元素的位置可以一一对应
    3.csv文件的第一行可以是列标题,也可以直接存储数据,即没有列标题
    4.csv.writer方法:可以生成一个writer对象,使用该对象可以将数据以逗号分隔的形式写入csv文件中,语法格式为 writer(csvfile),其中csvfile是一个具有write方法的对象,如果将文件对象传入writer方法,则使用open生成文件对象时要添上“newline = ‘’ ”,避免换行符的转换问题
    5.writer.writerow方法:向csv文件写入一行数据,语法格式为 writerow(row),其中row是要写入csv文件的一行数据
    6.writer.writerows方法:向csv文件写入多行数据,语法格式为 writerows(rows),其中rows是要写入csv文件的多行数据
    7.csv.reader方法:可以生成一个reader对象,使用该对象可以将以逗号分隔的数据从csv文件读出来,语法格式为:reader(csvfile),其中csvfile是一个迭代器,同样的,使用文件对象实参时,也需要在open方法加上“newline = ‘’ ”

    十、异常的定义和分类

    1.异常是指:因程序运行时发生错误而产生的信号
    2.如果程序不对产生的异常信号进行处理,程序就会抛出异常并停止程序运行。为了保证程序的稳定性和容错性,就需要在程序中捕获可能的异常并对其进行处理,使得程序不会因为异常而终止
    3.程序异常可以分为:语法异常和逻辑异常
    语法异常:编写的代码不符号编程语言的语法要求
    逻辑异常:编写的代码符合语法,但是不被系统或当前环境支持
    4.常见的逻辑异常:
    AssertionError:assert语句失败
    AttributeError:访问一个属性失败
    ImportError:导入一个模块失败
    IndexError:访问序列数据的下标越界
    KeyError:访问一个映射对象(如字典)中不存在的键
    MemoryError:当一个操作使内存耗尽
    NameError:当引用一个不存在的标识符
    OverflowError:算术运算结果超出表示范围
    RecursionError:超过最大递归深度
    RuntimeError:产生其他所有类别以外的错误
    StopIteration:迭代器中没有下一个可获取的元素
    TabError:使用不一致的缩进方式
    TypeError:传给操作或函数的对象类型不符合要求
    UnboundLocalError:引用未赋值的局部变量
    ValueError:内置操作或函数接收到的参数具有正确类型但不正确值
    ZeroDivisionError:除法或求模运算的第2个操作数为0
    FileNotFoundError:要访问的文件或目录不存在
    FileExistsError:要创建的文件或目录已存在

    十一、异常处理-try except

    1.try语句包括待捕获异常的执行语句,except语句根据异常类型捕获匹配的异常进行处理
    2.如果没有异常,except语句都不会执行,如果存在异常,except语句捕获成功,则执行匹配的except语句,程序正常向下执行,如果存在异常,except语句捕获失败,则程序向外层抛出异常,如果外层语句无法解决,则程序抛出异常并停止运行
    3.一个except语句可以同时负责捕获多个异常,其参数可以是一个异常元组

    十二、异常处理-else,finally和raise

    1.else语句:是try-except语句的一个可选项,如果try语句没有异常,则执行else语句,否则不执行
    2.finally语句:是try-except语句的一个可选项,无论try语句有没有异常,finally语句都会执行
    3.raise关键字:可以自行抛出异常,不必等待系统自动产生异常

    十三、异常处理-断言和自定义异常

    1.assert:断言,可以用来判断一个条件是否成立,如果成立,程序继续执行,如果不成立,程序抛出AssertionError异常
    2.自定义异常:以BaseException类为父类创建自定义异常类

  • 相关阅读:
    数据库上机实验7 数据库设计
    CLIP微调方式
    Java基础之《Ajax+JQuery(JavaEE开发进阶Ⅱ)》—JQuery选择器
    基于reactor设计http服务器
    如何在 Inno Setup 中关联多种文件格式
    全网最牛自动化测试框架系列之pytest(5)-断言
    面试突击81:什么是跨域问题?如何解决?
    Python量化投资——投资组合的评价和可视化(下):使用Matplotlib生成专业的投资回测数据可视化仪表盘【源码+详解】
    一步一步用numpy实现神经网络各种层
    【Qt图书管理系统】1.项目设计与需求分析
  • 原文地址:https://blog.csdn.net/m0_51819222/article/details/127429665