当前位置: 首页 > news >正文

第八章 文件与异常

引言

  1. 码字不易,如果这篇文章对您有帮助的话,希望您能点赞、收藏、加关注!您的鼓励就是我前进的动力!
  2. 目录

    • 一、读取文件
      • (一)读取文件:open(), with, read()
      • (二)文件路径
      • (三)文件内容操作:readlines(), replace()
    • 二、写入文件:write()
    • 三、异常:try-except-else
    • 四、存储数据: json.dump(), json.load()
    • 五、补充:split(), pass

一、读取文件

(一)读取文件:open(), with, read()

  1. 函数open接受一个参数:要打开的文件的名称。
  2. 关键字 with 在不再需要访问文件后将其关闭。你只管打开文件,并且在需要的时候使用它,python会自动在合适的时候(缩进结束的时候)将其关闭。
  3. 方法read() 到达文件末尾时,返回一个空字符串,而将这个空字符串显示出来就是一个空行。可在函数中调用 print() 中使用 rstrip() 。
with open('test.txt') as file:content=file.read()
print(content.rstrip())
#输出:test contents

(二)文件路径

  1. 相对路径:和代码保存在同一个文件夹的文件的路径。
  2. 绝对路径:将文件在计算机中准确位置告诉python,这样就不用关心当前运行的程序存储在什么地方了。绝对路径通常会比较长,可将其赋给一个变量,再由变量传递给open函数。
  3. 显示文件路径时,WINDOWS系统使用反斜杠(\),而不是斜杠(/),但在代码中依然可以使用斜杠。如果一定要使用反斜杠,可对路径中每个反斜杠都进行转义(即使用双斜杠)。
#相对路径:
path='test.txt'#绝对路径
path='D:/PythonExp/PythonExp1/test.txt' #使用斜杠
path='D:\\PythonExp\\PythonExp1\\test.txt' #使用反斜杠with open(path) as file:content=file.read()

(三)文件内容操作:readlines(), replace()

  1. 逐行读取。
path='test.txt'
with open(path) as file:for line in file:print(line)
#输出:
# test content1# test content2# test content3
  1. 文件关闭后继续使用文件内容方法:使用关键字 with 时,open返回的文件对象只在 with 代码块内可用。如果在代码块外访问文件的内容,可在代码块内将文件的各行存储在一个列表中,并在with代码块外使用该列表:可以立即处理文件的各个部分,也可以推迟到程序后面再处理。
  2. 方法 readlines() 从文件中读取每一行,并将其存储在一个列表中。
path='test.txt'
with open(path) as file:lines=file.readlines()for line in lines:print(line.rstrip())# 输出:
# test content1
# test content2
# test content3
  1. 读取文本文件时,返回的结果均为字符串。如果读取的数并要作为数值使用,就必须使用函数 int() 将其转换为整数,或使用函数 float() 将其转换为浮点数。
  2. 方法replace() 将字符串中特定单词都替换为另一个单词。
message="联想消费互联网服务业务"
print(message.replace('联想','Lenovo'))
#输出:Lenovo消费互联网服务业务

二、写入文件:write()

  1. 使用open打开文件时,第二个参数可指定打开模式:‘r’ 为只读模式, ‘w’ 为写入模式,‘a’ 为附加模式,‘r+’ 为读写模式。 如果省略了模式参数,python将默认以只读的模式打开文件。
  2. 以写入模式打开文件时千万要小心,因为如果指定的文件已经存在,python将在返回文件对象前清空该文件中的内容。
  3. Python只能将字符串写入文本文件,要将数值数据存储到文本文件中,必须先使用函数str() 将其转换为字符串格式。
  4. 要让每个字符串都单独占一行,需要在方法调用write() 中包含换行符。
  5. 如果要给文件添加内容,而不是覆盖原有的内容,可以附加模式打开文件,此时如果指定的文件不存在,python将为你创建一个空文件。
path='test.txt'
with open(path,'a') as file:file.write("\nAs long as you love me.")#文件内容:
# test content1
# test content2
# test content3
# As long as you love me.

三、异常:try-except-else

  1. try-except:使用 try-except 代码块时,即便出现异常程序,也将继续运行,显示你编写的错误消息,而不是traceback。
  2. 使用try-except-else 代码块时,程序只执行except或else中的其中一项,然后才执行try-except-else 代码块后面的代码。
  3. 通过将可能引发错误的代码放在 try-except 代码块中,可提高程序抵御错误的能力。
  4. 使用 try-except 代码块提供了两个重要的优点。避免用户看到traceback,以及让程序继续执行下去。
try:print(8/0)
except ZeroDivisionError:print("除数不能为0!")
else:	#try代码执行成功才执行的代码pass
print('1')#输出:
# 除数不能为0!
# 1

四、存储数据: json.dump(), json.load()

  1. 函数 json.dump() 接受两个实参:要存储的数据,以及可用于存储数据的文件对象。
  2. 函数 json.load() 将文件内容读取到内存中。参数为要读取的文件对象。
  3. 使用这两个函数的好处是:从文件存取数据时不需要转换为字符串型,可以保持原来的数据类型直接存取。
import json
list=[1,2,3,4,5]
path='test.txt'with open(path,'w') as file:json.dump(list,file)with open(path) as file:content=json.load(file)print(content)#文件中的内容:[1, 2, 3, 4, 5]
#输出:[1, 2, 3, 4, 5]

五、补充:split(), pass

  1. 方法split() 能根据一个字符串创建一个单词列表。
message="Near, far, wherever you are."
print(message.split())
#输出:['Near,', 'far,', 'wherever', 'you', 'are.']
  1. pass语句:可用于让python在代码块中什么都不要做。

参考资料:
[1] Eric Matthes. Python编程从入门到实践. 北京:人民邮电出版社, 2020.
[2]嵩天,礼欣,黄天羽. Python语言程序设计基础(第二版). 北京:高等教育出版社, 2017.
[3]Python语言程序设计,北京理工大学 嵩天

http://www.lryc.cn/news/67474.html

相关文章:

  • Gradle使用
  • 从七个方面聊聊Linux到底强在哪
  • python读写json文件方法详解
  • 多处最优服务次序问题——算法设计与分析(C实现)
  • 2023 年 IntelliJ IDEA 下载安装教程,超详细图文教程,亲测可用
  • 前端框架比较:Vue.js、React、AngularJS三者的优缺点和应用场景
  • JavaScript中的数据可视化和动画效果
  • 如何搭建在线产品手册
  • Java版企业电子采购招标系统源码
  • 【操作系统复习】第6章 虚拟存储器 2
  • 【OAI】OAI5G核心网VPP-UPF网元分析
  • 【上进小菜猪】使用Ambari提高Hadoop集群管理和开发效率:提高大数据应用部署和管理效率的利器
  • Day3--C高级3
  • 第9章 CURD操作与MemoryCache缓存的强制清理的实现
  • TCP 协议特性详解
  • 电子招投标采购系统源码:采购过程更规范,更透明
  • 一篇了解智慧网关
  • 自学软件测试,从10K到40K的技术路线,也就是这些东西...
  • Qt libqrencode二维码——QtWidgets
  • KDZD绝缘子表面电导盐密度测试仪
  • 如何降低电动汽车软件的开发成本和风险?
  • 使用pytest和allure框架实现自动化测试报告优化
  • chatGPT免费站点分享
  • 【计算机网络】已知一个/27网络中有一个地址是 167.199.170.82,问这个网络的网络掩码,网络前缀长度和网络后缀长度是多少?网络前缀是多少?
  • Java8 - Stream
  • 什么样的冷链保温箱,既环保又实用?
  • Eclipse的介绍与安装
  • <IBM AIX> 《AIX中HA的网卡IP确认方法》
  • AMB300系列母线槽红外测温解决方案某锂电厂房项目案例分享
  • go语言学习——4