《Python编程:从入门到实践》笔记(八)—— 文件和异常

第十章 文件和异常

1. 从文件中读取数据

函数open()

with open('pi_digits.txt') as file_object: 
	contents = file_object.read() 
	print(contents.rstrip())
  • 关键字with 在不再需要访问文件后将其关闭,所以可不使用close()函数。
  • open()函数返回一个表示文件的对象,并存储在后面的变量中。
  • 使用方法read() 读取文件的全部内容,并存储在变量中。
  • read()在到达文件末尾时返回一个空字符串,所以使用方法 rstrip()删除
  • 读取文本文件时,Python将其中的所有文本都解读为字符串。如果你读取的是数字,并要将其作为数值使用,就必须使用函数 int() 将其转换为整数,或使用函数float() 将其转换为浮点数。

文件路径

相对文件路径:让Python到指定的位置去查找,而该位置是相对于当前运行的程 序所在目录的。
绝对文件路径:文件在计算机中准确位置。

file_path = 'text_files/filename.txt' # Linux 或 MacOS 中的相对路径
file_path = 'text_files\filename.txt' # Windows 中的相对路径
file_path = '/home/ehmatthes/other_files/text_files/filename.txt' # Linux 或 MacOS 中的绝对路径
file_path = 'C:\Users\ehmatthes\other_files\text_files\filename.txt' # Windows 中的绝对路径

Linux 或MacOS系统中在文件路径中使用斜杠( / ),Windows系统在文件路径中使用反斜杠( \ )。

逐行读取

使用 for 循环逐行读取文件对象。

filename = 'pi_digits.txt' 
with open(filename) as file_object: 
	for line in file_object: 
		print(line.rstrip()) # 每行行尾都有一个换行符,print也有一个换行符,所以打印出来会有一行空白行,使用rstrip消除多余空白行。

创建一个包含文件各行内容的列表

方法 readlines() 从文件中读取每一行,并将其存储在一个列表中。

with open(filename) as file_object: 
	lines = file_object.readlines()

2. 写入文件

写入空文件

filename = 'programming.txt'
with open(filename, 'w') as file_object:
	file_object.write("I love programming") # 将这句话写入进filename文件中

调用open()函数时需要提供两个实参,第一个是要打开的文件的名称,第二个是打开文件的模式。
在这里插入图片描述

❗️如果要写入的文件不存在,函数open() 将自动创建它。然而,以写入(‘w’ )模式打开文件时千万要小心,因为如果指定的文件已经存在, Python将在返回文件对象前清空该文件。所以使用 x 或 a 模式比较保险。

3. 异常

  • Python使用被称为异常的特殊对象来管理程序执行期间发生的错误。每当发生Python不知所措的错误时,它都会创建一个异常对象。如果你编写了处理该异常的代码,程序将继续运行;如果你未对异常进行处理,程序将停止,并显示一个 traceback,其中包含有关异常的报告。
  • 异常是使用try-except 代码块处理的。(也可包含else 代码块)。
    try-except-else 代码块的工作原理大致如下:Python尝试执行try 代码块中的代码;只有可能引发异常的代码才需要放在try 语句中。有时候,有一些仅在try 代码块成功执行时才需要运行的代码,这些代码应放在else 代码块中。
try: 
	answer = number1 / number2 # 两个数相除
except ZeroDivisionError: # ZeroDivisionError异常,除数为0
	print("You can't divide by zero")
elseprint(answer) # 依赖于try 代码块成功执行的代码都应放到else 代码块中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值