一、文件的处理流程
二、基本操作
1.文件操作基本流程
2.文件编码
3.文件的打开模式
4.文件内置函数Flush
5.文件内光标移动
一、文件处理流程
1.打开文件,得到文件句柄并赋值给变量
2.通过句柄对文件进行操作
3.关闭文件
实例:
f = open('文档',encoding='utf-8') # open() 这个程序用‘utf-8’编码读取‘文档’#f也就是文件句柄.系统默认编码GBK(因此文件是Utf-8编码存储的,打开需以utf-8编码)
data = f.read() #读此文档中的内容
print(data) #打印出文档内容
f.close() #如果没有这步骤,文档处于一直打开状态,占用系统资源
二、 文件基本操作
1.只读模式操作: “ r 模式”
f = open('文档',‘r’,encoding=‘utf-8’) #encoding=‘utf-8’ 以utf8 方式打开 如果使用只读模式来操作,里面这个‘r’,如果不写的话,默认就是只读模式
data = f.read()
print (data)
f.close()
1.1 只读模式下的其他使用方法
readable()
f = open('文档',‘r’,encoding=‘utf-8’)
data = f.readable() #判断此文件是否可读,可读打印ture.如果在句柄处(f),将 (‘r’)改成('w')那么将打印false,表示文档不可读。
print(data)
f.close()
readline()
f = open('文档',‘r’,encoding=‘utf-8’)
print = ('第一行',f.readline()) #每次只读取,“文档”中的一行
print = ('第二行',f.readline()) #读取到第二行发现:每读取完一行之后会打印空行(在print语句后面添加end="" 来解决)
print = ('第三行',f.readline())
f.close()
readlines()
f = open('文档','r',encoding='gbk')
data = f.readlines() #readlines 是将文档中的所有内容读取出来,放在一个列表里面
print(data)
f.close()
**2.只写模式操作: “ w 模式”
f = open('文档','w',encoding='gbk')
data = f.write('junhao') #只写模式是创建新文档,覆盖原文档,f.write()里只能写一个参数,且必须是字符串
print(data)
f.close()
2.1只读模式下的其他使用方法
writeable ():如上面readable()的用法一致,是用bool()来判断,当前文档是否可写,可读
writelines() :
3.文件追加操作: **“ a 模式” **
f = open('文档','a',encoding='gbk') # a 模式本质上是写模式,无论从哪里写都是写到文档的最后一行
data = f.write('shdfu\n') # 在文当的末尾追加写入,默认是不会换行的需要手动加入换行(‘\n’)
print(data)
f.close()
以上三个模式为常用的文件操作
4.可读可写模式操作:* “ r+ ” **
with open('文档','r+',encoding='utf-8') as f: #关键字with 作用:在不需要访问文件后将其关闭 # 文件句柄 使用**as** 来赋值
data = f.read()
print(data)
f.write('junhao') # 这里面写入的位置是光标所在文档的具体位置开始写入
4.1文件内容的修改操作
src_f = open('文档','r',encoding='gbk')
data = src_f.readlines()
src_f.close() # 首先读取一个文档的内容,然后写入在另一个文档中,
dst_f = open('文档2','w',encoding='utf-8')
dst_f.writelines(data[0]) #因为上面读取代码中,readlines()命令读出的内容放在一个列表,所以我们可以用索引的方式,更改
dst_f.close()
5.b表示以字节的方式来操作
文件处理方式默认是文本方式来处理,但文件不仅仅包含文本,有的包含视频,图片等。
5.1 rb或r+b操作模式***
with open('文档','rb') as f: # b 的方式不可指定编码
data = f.read()
print = (data) #在windows 操作系统中,打印的每行尾部是\r\n,读出来的是二进制形式显示
print(data.decode('gbk')) # 要想显示出字符,需要对其进行解码操作,把二进制转字符串,用 decode() 来解码
5.2wb或w+b操作模式***
with open('a.txt','wb') as f :
f.write(bytes('军阿红\n',encoding = 'utf-8')) # 将字符串转换成二进制 写入,需要先进行编码 将字符串转二进制用**bytes()**encoding = 'utf-8' 以utf-8 方式编码
f.write('1111'.encode('utf-8')) # 也可直接encode 编码方式