文件的操作、读写模式、操作模式和文件的内置方法
今日总结
一、字符编码的实际应用
二、文件操作简介
三、文件的读写模式
四、文件的操作模式
五、文件的内置方法
一、字符编码的实际应用
1、编码和解码
编码 (encode) :
将人类能够理解的字符编码成计算机能够直接读懂的字符
解码 (decode):
将计算机能够理解的字符解码成人类能够直接读懂的字符
# 编码 encode
l1 = '锄禾日当午 上班好辛苦'
print(l1.encode('gbk'))
# 结果为 b'\xb3\xfa\xba\xcc\xc8\xd5\xb5\xb1\xce\xe7 \xc9\xcf\xb0\xe0\xba\xc3\xd0\xc1\xbf\xe0'
"""
字符窜前面如果加了字母'b'表示该数据类型为bytes类型
bytes类型可以看成二进制
"""
# 解码 decode
l2 = b'\xb3\xfa\xba\xcc\xc8\xd5\xb5\xb1\xce\xe7 \xc9\xcf\xb0\xe0\xba\xc3\xd0\xc1\xbf\xe0'
print(l2.deocde('gbk'))
# 锄禾日当午 上班好辛苦
"""
基于网络传输数据,数据都必须是二进制格式
"""
2、如何解决乱码的问题
数据当初以什么编码编,就用什么编码解码即可
l1 = '锄禾日当午 上班好辛苦'
res = l1.encode('gbk')
print(res)
res1 = res.decode('gbk')
print(res1)
res2 = res.decode('euc_kr') # euc_kr 为韩国语言
print(res2)

3、python解释器层面
python2解释器默认的编码是ASCII码
1、文件头:必须写在文件的最上方,告诉解释器使用指定的编码
coding:utf8
美化后的写法: _*_ coding:utf8 _*_
2、字符前缀:在使用python2解释器的环境下定义字符串要在前面加个u
name = u'你好哇'
在python3解释器中默认的编码是utf8
二、文件操作简介
1、文件的含义
操作系显示给用户可以直接操作硬盘的快捷方式
2、代码操作文件的流程
1、创建文件、打开文件
2、编辑文件中的内容
3、保存文件的内容
4、关闭文件
3、基本语法结构
结构1(了解):
l1 = open()
l1.close
结构2(推荐使用):
with open() as f:
pass
""" pass本身没有含义,主要为了不全结构,还有...也可以,但是使用率不高,容易被忽略
"""
# 使用关键字打开文件
''' 写路径为了防止特殊符号,在前面直接加r '''
open(r'haha.txt') # 相对路径(有一个参考系,用来找到文件)
open(r'F:\PycharmProjects\pythonProject3\haha.txt') # 绝对路径(通过绝对路径可以不需要参考系,直接找到文件)
"""
open(括号里面放的是文件路径,文件的操作模式,文件的编码)
1、文件的路径是必须要写的
2、文件的操作模式、文件的编码在只写模式下必须写
"""
# 在操作open完最后都需要执行close
# with上下文管理
with open(文件路径,文件的操作模式,文件的编码)as f: # f = open()
data = f.read()
print(data)
文件的读写模式
r —— read 只读模式:只能读不能写
w —— write 只写模式:只能写不能读
a —— append 只追加模式:在文件末尾添加内容
1 、r模式
read ,r模式
# 在路径不存在时,直接报错
# 路径存在时,正常打开文件并等待内容读取
with open(r'haha.txt', 'r', encoding='utf8') as f1:
print(f1.read())
"""
able在英语大部分情况下表示的是,具备什么什么的能力
readable 具备读的能力
writeable 具备写的能力
"""

2 、w模式
write
路径不存在时,自动创建一个文件
路径存在时,先清空文件内容,然后写入数据
with open(r'haha.txt','w',encoding='utf8')as f1:
f1.write('老老实实的,不要乱跑\n')
f1.write('老老实实的,不要乱跑\n')
f1.write('老老实实的,不要乱跑\n')
print(f1.read())
''' 在多段一起write时,如果不使用分隔符分割,会都在一行里面,不会帮你自动分割,使用我们使用\n分隔符分割段'''
3 、a模式
# a模式
路径不存在,自动创建文件
路径存在:不会清空文件内容 而是在文件末尾等待新内容的添加
with open(r'haha.txt', 'a', encoding='utf8') as f1:
f1.write('人生无常,大肠包小肠')
print(f1.read())
四 、文件的操作模式
1 、t模式
文本模式
r —— rt
w —— wt
a —— at
这个模式只能操作文本文件
必须指定encoding参数
读写都是以字符串为最小单位
2 、b模式
二进制模式 ,可以操作任意类型的文件
rb 不能省略b
wb 不能省略b
ab 不能省略b
可以操作任意类型的文件
不需要指定encoding参数
读写都是以bytes类型为最小单位
五、文件内置方法
read() # 他一次性读取文件内容
1、在执行完之后光标如果在文件末尾,继续读取没有内容
2、当文件内容特别大的时候,容易造成内存满
readline() # 一次只读一行内容
readlines() # 结果出来时,是一个列表,里面的元素对应的是文件的每行内容
readable() # 判断当前这个文件是不是一个可读的
支持for循环 # 一行行的读取文件的内容,内存中同一时刻只有一行内容
write() # 写入文件的内容(字符串或者bytes类型)
writelines() # 可以将列表中多个元素写入文件
writable() # 判断文件是不是可以写的
flush # 保存的意思,先当与ctrl + s