python文件操作与异常处理

2023-11-17

一、文件操作

内建函数open,能够打开一个指定路径下的文件,返回一个文件对象。

open的两个参数:第一个参数是文件名,第二个是打开方式('r'、'w'、'a', 'b'依次表示读,写,追加写,二进制)。

1.内建函数:包含在_buildings_这个模块中的一些函数,而_buildings_这个模块python解释器会去包含使用dir(_buildings_)可以看到pythonyigongyounaxie 内建函数。

2.文件对象:C语言知道FILE*,通过FILE*进行读写操作;Linux中,FILE*包含文件描述符,Linux对其操作,python的文件对象,也包含了文件描述符。本质上也是对文件描述符操作。

3.读文件

1) read:读指定长度字数的数据,返回一个字符串(不是很常用)。

2) readline:读一行数据,返回一个字符串。

3) readlines:读整个文件,返回一个列表,列表中的每一项是一个字符串,代表一行的内容。

4) 直接使用for  line in f (f是文件)的方式循环遍历每一行,功能和readline类似,一次只读一行,此readlines占用内存少。

注意:readline或者readlines仍然会保留换行符,所以需要写这样的代码来去掉换行符。

 4.写文件

1)write:向文件中的每一段字符串写文件,必须按照‘w’或者‘a’的方式打开文件,否则会写失败。

2)writelines:参数是一个列表,列表中的每一个元素是一个字符串,并没有一个writeline这样的函数,因为这样就等价于write时在字符串后面加上‘\n’,使用writelines时,也要保证每个元素末尾都带有‘\n’.

5.读写缓冲区

1)C语言库函数中的fread,fwrite和系统调用read,write相比,功能类似,但是fread,fwrite是带有缓冲区的。python的文件读写操作,带缓冲区和不带缓冲区均支持。

2)open函数打开一个文件时,其实还有三个参数,可以指定是否用缓冲区,以及缓冲区大小。

3)flush:可以立即刷新缓冲区。

6.操作文件指针:文件具备随机访问的能力。

1) seek:将文件指针移动到文件开头算起的第几个字节上,有两个参数,第一个参数offset表示偏移的字节数;第二个whence表示偏移量的起始位置在哪,值为0,表示从开头计算;值为1,表示从当前位置;值为2,表示从文件结尾位置。

2)text:获取当前文件指针指向的位置,返回当前位置到文件开头的偏移量。

7.with语句:用完的对象,要及时关闭,否则可能会引起句柄泄露,但是如果忘记了手动调用close怎么办?C++中使用“智能指针”的方式来管理内存/句柄的释放,借助对象的构造和析构函数,自动完成释放过程,在python中对象的收回取决于GC机制,并不像C++中时效性那么强,Python中引入了上下文管理器来解决这个问题。

8.上下文管理器:在with语句块内进行文件操作,当文件操作完毕之后,除了with语句之外,就会自动执行的关闭操作。一个支持上下文协议的对象才能被应用与with语句中的这种对象。python中很多内置对象都是上下文管理器。eg:文件对象,线程锁对象等。

二、异常处理

1.含义:异常是指程序执行过程中,发生了错误,根据不同的错误类型,抛出不同类型的异常。

    如果一个程序抛出了异常,如果不对这个异常做任何处理,默认行为就是导致程序运行终止。

2.C++/Java/与python异常的区别:

python是解释执行的,所以语法错误和执行逻辑出现问题导致的错误都被python统一成了异常。

C++/Java预先对代码进行编译,如果语法出错,在编译期间就能检查出来,因此C++/Java的异常只有运行时错误。

3.异常机制:归根结底就是简化代码的错误处理逻辑。

调用一个函数,有可能会调用失败,C语言中通常会使用函数返回一个错误的值的方式来判定函数的成功失败,因此每个函数调用完成,往往需要检查一下函数都有返回值。

4.处理异常

1)我们使用try语句来捕捉异常(可能触发异常的代码放到try中),使用except具体处理异常。

2)如果异常能够被被except捕捉到,则不会影响程序继续执行。

3)IndexError,e相当于捉捕到的这个异常对象的名字e,这个异常对象中包含了异常的具体信息。

4)except 可以指定一个具体的处理哪种异常,如果try中抛出的异常类型,不在except中,那么仍然会程序终止。

5)一个try语句,可以和多个except语句联合工作。

6)一个try语句,还可以搭配else工作。

7)except可以不带具体的异常类型,这样只要try中触发了任意的异常,except都能捕捉到。

8)python中内置的异常类,其实都继承自Exception类。

9)如果想执行一些不管是否触发异常都要执行到的代码,可以放到finally语句块中。

5.抛出异常:使用raise关键字在代码中“抛出异常”。

 

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python文件操作与异常处理 的相关文章

随机推荐

  • 可以编辑的table antd

    版本一 效果图 有保存按钮 antd3 代码 import React Component from react import Form Input Button Table Divider Popconfirm Tooltip from
  • 19_复制目录下所有文件夹和目录CopyFile()

    复制目录下所有文件夹和目录CopyFile 想一下 若要复制文件夹 可以在目录位置新建一个文件夹 然后将源文件夹中里面的文件进行遍历 一个一个的复制到目标文件夹中即可 void EnumCopyFile 输入参数 TCHAR szSrcRo
  • STL——vector以及emplace_back分析

    1 这里需要注意凡是连续空间的容器都提供operator 是为了数组操作 2 back 应该是 end 1 3 vector的大小为12 vector的迭代器为指针 1 emplace back 1 相比push back 如果传入临时对象
  • matlab中的锐度测量,锐度(解析度)MTF定义及测试

    Image sharpness 图像锐度 解析度 锐度无疑是最重要的摄影图像质量的评价因素 它是关系到图片中有多少细节可以被辨认的最密切因素 但它不是唯一的重要因素 其他重要因素包括色差 与锐度密切相关 噪音 动态范围 与噪声密切相关 和色
  • mysql常用命令

    mysql命令 查询 限制返回个数及偏移量 m 偏移量 n 个数 只限制个数可省略m 如limit 2 select from
  • IntelliJ IDEA破解

    今天写个IDEA破解 废话不多说 直接给网址 官网 https www jetbrains com idea 破解注册码 http idea lanyus com 里面有永久破解 还有注册码 可你根据你的喜爱 来选择 今天写一下它的破解补丁
  • HashMap之扩容原理

    一 什么是HashMap HashMap 数据结构为 数组 链表 JDk1 7 JDK1 8中增加了红黑树 其中 链表的节点存储的是一个 Entry 对象 每个Entry 对象存储四个属性 hash key value next 二 为什么
  • explicit关键字解析

    C 提供了关键字explicit 可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生 声明为explicit的构造函数不能在隐式转换中使用 C 中 一个参数的构造函数 或者除了第一个参数外其余参数都有默认值的多参构造函数 承担了两个角
  • Vue3.0-计算属性computed

    Vue3 0中的computed的功能与2 0中的计算函数功能一样 引入方法 import computed from vue 使用 在引入之后 设计箭头函数 var name computed gt 函数体 retrun 返回值 也就是计
  • Make和Makefile快速入门

    文章目录 目的 基础入门 Makefile语法 基础杂项 变量 条件选择 函数 文件引用 嵌套执行 make使用 使用进阶 总结 目的 我们可以在终端中通过命令来使用GCC编译代码生成可执行文件 对于实际的项目因为涉及的文件通常会比较多一些
  • 搭建OpenGL开发环境

    资料 安装教程 软件下载 Visual Studio 2019 CMake GLFW GLAD glfw 3 3 8 下载glfw的目的 获取压缩包里的include 生成glfw3 lib 获取include 解压找到Include in
  • shader学习笔记一:shader运行原理及uniform关键字

    shader运行原理 首先 opengl api函数输入一些数据 包括顶点数据 纹理数据 矩阵变换数据 这些顶点数据到 顶点处理阶段 顶点处理阶段 图形流水线会调用 vertex shader 顶点shader 对顶点进行处理 有多少个顶点
  • QT 5.12.9 +VS 2019配置并实现与三菱Q系列PLC通讯(2)实现通讯

    QT 5 12 9 VS 2019配置并实现与三菱Q系列PLC通讯功能 1 软件的安装 之前已经完成了软件的安装 接下来要通过MX Component去实现PLC的直连功能 首先 打开VS2019 新建项目 搜索qt 在出来的内容中选择QT
  • Feign 中的继承、日志与数据压缩

    上篇文章和大家分享了声明式微服务调用组件 Feign 的基本用法 相信大家已经了解到使用 Feign 的好处了 使用 Feign 有效地解决了使用 RestTemplate 时的代码模板化的问题 使服务之间的调用更加简单方便 同时也不易出错
  • tk.mybatis默认insert方法,使用@GeneratedValue无效的坑,提示id不能为null

    坑了一小时 试了各种配置 最后发现 是数据库没有为ID设置自增 记录一下
  • android延迟自动跳转,Android实现倒计时跳转和延时操作

    App启动页倒计时3秒跳转到App的首页 这种操作在很多App中都很常见 如果需要做一个延时操作呢 写一个子线程停留3秒然后执行操作 这样的话需要特别的注意的是UI操作必须放在主线程里 那么还需要转化成主线程 NO 使用Handler轻松实
  • 计算机网络拓扑结构详解

    计算机网络拓扑结构是指网络中通信线路和设备的分布情况以及连接状态所形成的物理布局 网络拓扑结构主要包括 总线型拓扑结构 星型拓扑结构 环型拓扑结构 树型拓扑结构 网状拓扑结构 混合型拓扑结构 1 总线型拓扑结构 释义 采用一条公共总线将所有
  • CTF_Misc题目分析2_linux系统密码

    CTF Misc题目分析2 linux系统密码 引入 John the Ripper John the Ripper 是一个快速的密码破解工具 用于在已知密文的情况下尝试破解出明文的破解密码软件 支持大多数的加密算法 主要目的是破解不够牢固
  • 2023华为od机试统一考试B卷Java【稀疏矩阵】

    前言 本题使用Java解答 如果需要Python代码 请参考以下链接 点我 题目描述 稀疏矩阵的定义是 矩阵中有很多系数都是 0 现在我们有一个矩阵 我们进行逐行逐列扫描 在扫描的过程中 如果某一行或者某一列内 如果 0 的个数超过了当前的
  • python文件操作与异常处理

    一 文件操作 内建函数open 能够打开一个指定路径下的文件 返回一个文件对象 open的两个参数 第一个参数是文件名 第二个是打开方式 r w a b 依次表示读 写 追加写 二进制 1 内建函数 包含在 buildings 这个模块中的