1.二进制文件的输入输出
(1)、struct和pickle<br>
使用struct模块,进行数据的输入输出
使用步骤:
第一,对要写入到文件中的各种类型数据,进行统一打包
struct.pack('if',10,12.4),其中,i:代表了整数,f:代表了浮点数
?:代表布尔型
第二,使用write()写入,写入后以二进制的方式进行文件存储。
第三,读取时,首先采用struct.unpack()来解包里面包含的相关数据,返回一个序列,即写入时的顺序,与读取时的顺序应该一致。
注意:需要将所有写入的数据,一次性都封装到一个bytes中,因为在Python中没有byte的概念,所以需要第三方的模块进行封装。
使用pickel模块,进行数据的输入输出
使用步骤:
第一,对要写入文件中的数据,进行逐一的写入。例如:
f = open('myfile.dat','wb')
pickle.dump(10, f)
第二,读取数据时,同理,需要逐一的读取。例如:
pickle.load(f)
注意,在使用时,我们能够观察到该模块的dump和load函数,与前面所学的json模块的函数一致,在Python中json与pickle都能够实现序列化和反序列化的两个模块。
在实际的使用中,推荐使用pickle 模块。
(2)文件定位
函数格式:seek(n)
返回值:返回指定的位置
说明:通过指定元素的位置,将文件指针移动到该位置。
seek()函数有三个固定值,分别为:0,1,2
0:文件的开头
1:文件当前的位置
2:文件的结尾位置
seek(0,2):代表着将指针定位到文件尾,然后进行添加操作
seek(0,1):代表着在当前指针的位置,进行替换
补充:对文件的读取时,如果文件大小未知,切忌不要使用read(),readline(),readlines()将文件内容一次性读取到内存中。因为有可能文件内容过多,造成读取时的IO阻塞。建议,将文件分多次分批读入内存中。我们通常可以先获取到文件大小,
size = path.getsize('