Python基础篇(8)---字符编码和文件操作
本章内容
•字符编码
•文件的操作简介
•文件的读写模式
•文件的操作模式
•文件的内置方法
字符编码
人类在与计算机沟通交流,用的都是人类能读懂的字符,而计算机只能识别二进制数 所以由人类的字符到计算机中的能够识别的二进制数,需要经历一个过程,这个过程就是字符编码。
字符编码中的编码指的是翻译或者转换的意思,即将人能理解的字符翻译成计算机能识别的数字。
1.编码和解码
编码:将人类能够读懂的字符编码成计算机能够直接读懂的字符。 解码:将计算机能够直接读懂的字符解码成人类能够读懂的字符。 # 编码 encode a = '有志者事竟成' print(a.encode('gbk')) # 输出 b'\xd3\xd0\xd6\xbe\xd5\xdf\xca\xc2\xbe\xb9\xb3\xc9' """ 字符串前面如果加了字母b 表示该数据类型为 bytes类型 bytes类型可以看成是二进制 """ # 解码 decode res =b'\xd3\xd0\xd6\xbe\xd5\xdf\xca\xc2\xbe\xb9\xb3\xc9 print(res.decode('gbk')) # 输出 有志者事竟成 """ 基于网络传输数据 数据都必须是二进制格式 所以肯定涉及到编码与解码 """
2.解决乱码问题
# 数据当初以什么编码编的就以什么编码解即可 res1 = s1.encode('gbk') print(res1) # 编码 res2 = res1.decode('euc_kr') print(res2) # 乱码 res3 = res1.decode('gbk') print(res3) # 正常显示
3.python解释器层面
# python2.X内部使用的编码默认是ASCII # 文件头 coding:utf8 -*- coding:utf8 -*- 美化写法 # 在python2中定义字符串前面要加一个小u s = u'你' # python3.X默认使用utf8
文件的操作简介
1.什么是文件?
文件其实是操作系统暴露给用户操作硬盘的快捷方式。
2.代码操作文件的流程
1.打开文件、创建文件 2.编辑文件内容 3.保存文件内容 4.关闭文件 """ 文件路径:相对路径与绝对路径 路径中出现了字母与斜杠的组合产生了特殊含义如何取消 在路径字符串前面加一个r r'D:\python\a.txt' """ #1.使用关键字打开文件 open(r'a.txt') # 相对路径 open(r'D:\py1\day09\a.txt') # 绝对路径 res = open(r'a.txt', 'r', encoding='utf8') # 2.读取文件内容 print(res.read()) # 3 关闭文件 res.close() """上述操作open完最后都需要执行close 而close这一行很任意被遗忘""" # with上下文管理 with open(r'a.txt', 'r', encoding='utf8') as f: # f = open() data = f.read() print(data)
r read 只读模式:只能读不能写
w write 只写模式:只能写不能读
a append 只追加模式:在文件末尾添加内容
r模式
r模式 只能看不能改 路径不存在会直接报错 # 路径存在 with open(r'a.txt', 'r', encoding='utf8') as f: # print(f.read()) # 读取文件内所有的内容 f.write('啊啊啊啊 啊啊啊') # 报错 """ able在英语中大部分情况下表示的是 具备...的能力 readable 具备读的能力 writable 具备写的能力 """
w模式
# w模式 只能写不能看 路径不存在则自动创建文件 # 路径存在: with open(r'a.txt', 'w', encoding='utf8') as f1: f1.write('第一行文本\n') # 写入文件内容 f1.write('第二杠文本\r') # 写入文件内容 f1.write('第三行文本\n') # 写入文件内容 print(f1.read()) """ w模式需要注意的是写入数据,先清空文件内容 之后再写入数据
为了节省空间支持一个字符 根据操作系统的不同可能有所区别 \n 、 \r """
a模式
# a模式和w模式差不多,区别在于a模式是在末尾添加文本且不会清空原数据 # 路径不存在:自动创建文件 # 路径存在:不会清空文件内容 而是在文件末尾等待新内容的添加 with open(r'a.txt', 'a', encoding='utf8') as f: f.write('鹅鹅鹅饿') print(f.read())
文件的操作模式
t模式
t就是文本模式 是默认的模式r,w,a。t被省略了,完整的写的话应该是'rt'、'wt'、'at'。
注意事项:
1.该模式只能操作文本文件
2.该模式必须要指定encoding参数
3.该模式读写都是以字符串为最小单位
b模式
b模式是二进制模式 可以操作任意类型的文件,rb,wb,ab 他们的b不能省略
注意事项:
1.该模式可以操作任意类型的文件
2.该模式不需要指定encoding参数
3.该模式读写都是以bytes类型为最小单位
文件的内置方法
之前我们学习了基本数据类型的内置方法,文件也是有内置方法的。
read() # 一次性读取文件内容 # 1.执行完之后光标在文件末尾 继续读取没有内容 # 2.当文件内容特别大的时候 容易造成内存溢出(满了) readline() # 一次只读一行内容 readlines() # 结果是一个列表 里面的各个元素是文件的一行行内容 readable() # 判断当前文件是否可读 write() # 写入文件内容(字符串或者bytes类型) writelines() # 可以将列表中多个元素写入文件 writable() # 判断文件是否可写 flush() # 相当于主动按了ctrl+s(保存) ''' 文件还支持for循环 : 一行行读取文件内容(推荐使用) 内存中同一时刻只会有一行内容 '''


浙公网安备 33010602011771号