目录

  • 前言
    • ●  Python解释器安装
    • ●  PyCharm开发环境
  • Python程序设计实验
    • ●  实验1 IDLE与代码编写规范
    • ●  实验2 输入输出与数据类型
    • ●  实验3 字符串处理
    • ●  实验4 数据运算
    • ●  实验5 列表与元组应用
    • ●  实验6 字典与集合应用
    • ●  实验7 if语句与match语句
    • ●  实验8 使用循环语句
    • ●  实验9 异常处理
    • ●  实验10 函数应用
    • ●  实验11 类的应用
    • ●  实验12 模块应用
    • ●  实验13  应用re模块
    • ●  实验14 文件处理
    • ●  实验15 用户界面设计
    • ●  实验18 SQLite数据库应用
    • ●  理论考试模拟试题A
    • ●  理论考试模拟试题B
    • ●  理论考试模拟试题C
    • ●  理论考试模拟试题D
  • 学习参考
    • ●  01 Python及其IDLE环境
    • ●  02 Python代码规范
    • ●  03 常量和变量
    • ●  04 输入输出
    • ●  05 运算符
    • ●  06 数值类型
    • ●  07 字符串
    • ●  08 列表
    • ●  09 元组
    • ●  10 字典
    • ●  11 集合
    • ●  12 条件语句
    • ●  13 循环语句
    • ●  14 异常处理
    • ●  15 自定义函数
    • ●  16 内置函数
    • ●  17 模块导入与定义
    • ●  18 math模块
    • ●  19 os模块
    • ●  20 time模块
    • ●  21 random模块
    • ●  22 文本文件
    • ●  23 二进制文件
    • ●  24 类的创建和使用
    • ●  25 类的继承与多态
 23 二进制文件

一、从二进制文件中读取数据

读取二进制文件中的数据需要三个步骤:

1、打开文件

格式:f=open(file,mode="rb")

作用:打开file文件,只能读取文件数据(字节串)。open函数返回一个_io.TextIOWrapper对象。如果文件不存在,则会触发FileNotFoundError异常。文件名可包含路径。不包含路径时为当前工作路径。如:f=open("infs.jpg","rb")。

特别提示:

mode参数也可取以下值:

(1)"r+b"。打开文件后,可以读取数据,也可以将数据写入文件。文件必须存在。

(2)"w+b"。打开文件后,可以读取数据,也可以将数据写入文件。文件存在则覆盖;文件不存在则创建。

(3)"a+b"。打开文件后,可以读取数据,也可以将数据写入文件(数据只能添加到文件尾)。文件不存在则创建。

2、读取数据

从文件读取的数据是bytes类型(字节串)。读取数据的主要方法有:

(1)使用read方法

格式:read([size])

作用:从文件当前位置读取size字节。不指定size时读取全部数据。

(2)使用readline方法

格式:readline(size=-1)

作用:从当前位置读取一行数据(size=-1时,包括回车符)。如果size>0,则只读取一行的前size个字节。

(3)使用readlines方法

格式:readlines(hint=-1)

作用:读出所有行(hint=-1时)。返回的是以行为元素的列表。如果hint>0,则仅读取第hint个字节所在行及其前面各行的数据。

(4)使用文件对象(是可迭代对象)。如:f=open("a.jpg","rb");a=list(f);f.close()

3、关闭文件

调用文件对象的close方法即可关闭文件。

特别提示:

(1)也可使用with语句打开文件,这时读取数据后文件会自动关闭,无需调用文件对象的close方法。如:with open("a.jpg") as f:d=f.read()

(2)利用seek(offest,from)可以重定位文件读取位置。参数offest指定需要移动的字节数,from指定移动的开始位置。可以是: 0(文件头)、1(当前位置)、2(文件尾)。


二、将数据写入文件

只能将字节串写入文件。基本步骤是:

1、打开文件

格式:f=open(file,mode="wb")

作用:打开file指定的文件,打开的文件只能写入数据,不能读取数据。如果文件存在,则会清空文件内容。如果文件不存在,则会创建文件。也可将参数mode设置为"ab"(追加模式,只能将数据添加到文件尾)、"r+b"、"w+b"、"a+b"。请参考“从文件读取数据”的“打开文件”部分。

2、将数据写入文件

可以使用以下方法将bytes类型的数据写入文件:

(1)文件对象的write方法

格式:write(str)

作用:将数据写入文件。str必须是字节串。

示例:f=open("c:\\x.ppk","w");f.write(b"good");f.close()

(2)文件对象的writelines方法

  格式:writelines(line)

作用:将多行数据写入文件。line为行数据组成的列表。

示例:f=open("C:\\x.txt","wb");f.writelines([b'a\n',b'b\n',b'c']);f.close()

(3)print函数

格式:print(*obj,sep=' ',end='\n',file)

作用:在文件对象file上输出obj指定的数据。

示例:f=open("C:\\x.txt","w");print(b"How are you",file=f);f.close()

3、关闭文件

调用文件对象的close方法即可关闭文件。

特别提示:

(1)也可使用with语句打开文件,这时读取数据后文件会自动关闭,无需调用文件对象的close方法。如:with open("a.ppk","wb") as f:f.write(b"good")

(2)利用seek(offest,from)可以重定位文件写入位置。参数offest指定需要移动的字节数,from指定移动的开始位置。可以是: 0(文件头)、1(当前位置)、2(文件尾)。