第十节 135-152课时

文件操作(IO技术)

一. 文本文件和二进制文件
按文件中数据组织形式,把文件分为文本文件和二进制文件两大类。

  1. 文本文件:文本文件存储的是“字符”文本,Python默认为unicode字符集(两个字节表示一个字符,最多可以表示65536个),可以使用记事本程序打开。但是,word软件编辑的文档不是文本文档。
  2. 二进制文件:二进制文件把数据内容用“字节”进行存储,无法用记事本打开。必须使用专用的软件解码。常见的有:MP4视频文件、MP3音频文件、JPG图片、doc文档等。

创建文件对象open()
open()函数用于创建文件对象,基本语法格式如下:
open(文件名[,打开方式])
如果只是文件名,代表在当前目录下。文件名可以录入全路径,比如:D:\a\b.txt。为了减少"“的输入,可以使用原始字符串:r"d:\b.txt”。
打开方式有如下几种:
r:读read模式
w:写write模式。如果文件不存在则创建;如果文件存在则重写新内容。
a:追加append模式。如果文件不存在则创建;如果文件存在则在文件末尾追加内容。
b:二进制binary模式(可与其他模式组合使用)
+:读、写模式(可与其他模式组合使用)

文本文件对象和二进制文件对象的创建:
如果没有增加模式“b”,则默认创建的是文本文件对象,处理的基本单元是“字符”。如果是二进制模式“b”,则创建的是二进制文件对象,处理的基本单元是“字节”。

二. 文本文件的写入
基本的写入操作:
文本文件的写入一般就是三个步骤:1、创建文件对象;2、写入数据;3、关闭文件对象。
例如:

f = open(r"a.txt",“a”)
s = “itbaizhan\nsxt\n”
f.write(s)
f.close()

常用编码之间的关系:
在这里插入图片描述
write()/writelines()写入数据
write(a):把字符串写入到文件中
writelines(b):把字符串列表写入文件中,不添加换行符

close()关闭文件流
由于文件底层是由操作系统控制,所以我们打开的文件对象必须显示调用close()方法关闭文件对象。当调用close()方法时,首先会把缓冲区数据写入文件(也可以直接调用flush()方法),再关闭文件,释放文件对象。
为确保打开的文件对象正常关闭,一般结合异常机制的finally或者with关键字实现无论何种情况都能关闭打开的文件对象。

with语句(上下文管理器)
with关键字(上下文管理器)可以自动管理上下文资源,不论什么原因跳出with块,都能确保文件正确的关闭,并且可以再代码块执行完毕后自动还原进入该代码块时的现场。

文本文件的读取
文件读取一般使用如下三个方法:
1.read([size])
从文件中读取size个字符,并作为结果返回。如果没有size参数,则读取整个文件。读取到文件末尾,会返回空字符串。

2.readline()
读取一行内容作为结果返回。读取到文件末尾,会返回空字符串。

3.readlines()
文本文件中,每一行作为一个字符串存入列表中,返回该列表。

二进制文件的读取和写入
二进制文件的处理流程和文本文件流程一致。首先还是要创建文件对象,不过,需要指定二进制模式,从而创建出二进制文件对象。“wb”:可写的、重写模式的二进制文件对象;“ab”:可写的、追加模式的二进制文件对象;“rb”:可读的二进制文件对象。 创建好文件对象后,仍然可以使用write()、read()实现文件的读写操作。

文件对象seek(offset,whence)属性
把文件指针移动到新的位置,offset表示相当于whence的多少个字节的偏移量;
offset:off为正往结束方向移动,为负往开始方向移动。
whence不同的是代表不同的含义;
0:从文件头开始计算(默认);
1:从当前位置开始计算;
2:从文件末尾开始计算。

使用pickie序列化
序列化指的是:将将对象转化成“串行化”的数据形式,存储到硬盘或通过网络传输到其他地方。反序列化是指相反的过程,将读取到的“串行化数据”转化成对象。

pickle模块序列化使用:
pickle.dump(obj,file) obj就是要被序列化的对象,file指的是存储的文件;
pickle.load(file) 从file读取数据,反序列化成对象

三. CSV文件的操作

1. csv.reader对象和csv文件读取:
示例:

import csv
with open(r"d:\a.csv") as a:
****a_csv = csv.reader(a)
****headers = next(a_csv)
****print(headers)
****for rown in a_csv:
********print(raw)

2. csv.writer对象和csv文件写入:
示例:

import csv
headers = [“工号”,“姓名”,“年龄”,“地址”,“月薪”]
rows = [(“1001”,“高琪”,18,“西三旗一号院”,“50000”),(“1002”,“高八”,19,“西三旗一号院”,“30000”)]
with open(r"d:\b.csv",“w”) as b:
****b_csv = csv.writer(b)
****b_csv.writerow(headers)
****b_csv.writerows(rows)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值