Python基础入门6_文件和异常

这篇Python基础教程涵盖了文件的读写,包括文本文件、二进制文件及JSON格式,强调了异常处理机制,如try-except-finally语句,并介绍了pathlib模块在文件路径处理上的便利性。
摘要由CSDN通过智能技术生成

Python 基础入门前五篇:

这次将介绍有关文件和异常的处理,包括读写文本文件、二进制文件、JSON 文件,异常处理,以及 pathlib 模块的介绍。

本文的目录如下:


1. 文件

简介

Python 中读取、写入文件,都可以通过方法 open() 实现,该方法用于打开一个文件,然后返回文件对象,如果文件不存在或者无法打开,会报错 OSError

open 方法的语法如下:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

几个参数说明:

  • file:必需,文件路径,相对或者绝对路径皆可;
  • mode:可选,文件打开的模式
  • buffering:设置缓冲
  • encoding:一般采用 utf8
  • errors:报错级别
  • newline:区分换行符
  • closefd:传入的 file 参数类型

常用的文件打开模式如下:

操作模式 具体含义
r 读取(默认文件打开模式)
w 写入(会截断前面的内容)
x 写入,如果文件已经存在会产生异常
a 追加,将内容写入到已有文件末尾
b 二进制模式
t 文本模式(默认)
+ 更新(既可以读又可以写)

其中 rwa 是三选一,表明读取或者写入,然后可以添加其他几种模型,即还存在:

  • rb , r+, rb+
  • wb, w+, wb+
  • ab, a+, ab+

对于 open 方法返回的 file 文件对象,它常用函数有:

  • close():关闭文件
  • flush():将内部缓冲区数据立刻写入文件
  • read([size]):从文件读取指定的字节数,如果没有或者是负数值,则读取所有
  • readline():读取整行,包含换行符 \n 字符
  • readlines([sizeint]):读取所有行并返回列表,若给定 sizeint>0,返回总和大约为 sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。
  • write(str):将字符串写入文件,返回的是写入字符的长度
  • writelines(sequence):向文件写入一个序列字符串列表,如果需要换行,需要自己添加每行的换行符
  • seek(offset[, whence]):设置文件当前位置
  • tell():返回文件当前位置。
  • truncate([size]:从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后后面的所有字符被删除,其中 Windows 系统下的换行代表 2个字符大小。
读取文本文件

读取文本文件,必须传入文件路径,然后打开模式指定为 r ,接着就就是通过 encoding 参数指定编码,当然不设置这个编码参数,它默认值是 None ,读取文件将采用操作系统默认的编码,通常如果文件内容不带有中文,这种方法是没问题的,如果带有中文内容,则必须指定 encoding='utf8' 才能正常打开文件。

以下是一个使用例子:

# 方法1
f = open('test.txt', 'r')
print(f.read())
f.close()

输出结果:

life is short, I use Python.
Machine Learning
Computer Vision

这是第一种使用方法,这种方法的问题就是如果忘记调用 close 方法关闭文件,会出现错误,因此推荐使用上下文语法,通过 with 关键字指定文件对象的上下文环境并在离开上下文环境时自动释放文件资源,此外,读取文件内容,可以直接调用 read() 方法,也可以采用 for-in 循环读取:

# 方法2
with open('test.txt', 'r') as fr:
    print(fr.read())
# 方法3 读取文件也可以采用 for-in 循环逐行读取
with open('test.txt', 'r') as fr:
    for line in fr:
        print(line.strip())

2. 异常

Python 有两种错误很容易辨认:语法错误和异常

语法错误也称为解析错,比如下面这个例子:

while True
    print('hello')

会报错误,这里指出语法错误的地方,就是缺少非常重要的冒号 :

File "<ipython-input-41-b385275d6655>", line 1
    while True
              ^
SyntaxError: invalid syntax

而异常,是运行期检测到的错误,即解析成功后,开始运行时的错误,比如执行除法操作时候,除数是 0 的情况;读取文件的时候,文件路径错误;变量没有定义的情况等等。

异常处理

异常的处理,就是采用 try-exception 语句,例子如下:

def read_file(file_name)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

spearhead_cai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值