今日内容概要
- 字符编码
- 编码与解码
- 文件操作
- 读写模式
- 操作模式
- 作业
今日内容详细
字符编码
#前提:
计算机是基于电工作的 而电信号只有高低电频两种状态
所以计算机只认识两种状态 人为的定义为0和1
人类的字符与数字之间存在对应关系
#发展史
1.一家独大
ASCII码:内部记录了英文与数字的对应关系
2.群雄割据
中国GBK码:内部记录了英文、中文与数字的对应关系
韩国Euc_kr码:内部记录了英文、韩文与数字的对应关系
日本shift_JIS码:内部记录了英文、日文与数字的对应关系
3.天下一统
unicode码(万国码):内部记录了国家文字与数字的对应关系
utf8(万国码优化版本):目前默认使用该编码
"""
如果文本文件出现了乱码,尝试切换字符编码即可
"""
编码与解码
#编码
按照指定的编码本将人类的字符编程成计算机能够识别的二进制数据
#解码
按照指定的编码本将计算机的二进制数据解析成人类能够读懂的字符
eg:
res = '啦啦啦啦啦啦'
#编码
res1 = res.encode('gbk')
print(rest1)
#解码
res2 = res1.decode('gbk')
print(res2)
文件操作
#第一种
with open(文件路径,读写模式,字符编码) as 变量名:
with子代码
#第二种
变量名 = open(文件路径,读写模式,字符编码)
一系列操作
变量名.colse()
读写模式
r (只读模式)
1.文件路径不存在会直接报错
2.文件存在则打开并可读取文件内容
#光标在文件开头
eg:
with open(r'aaa.txt', 'r', encoding='utf8') as f:
print(f.read()) # 一次性读取文件内容
w (只写模式)
1.文件路径不存在会自动创建
2.文件路径存在会先清空该文件内容然后再写入
eg:
with open(r'aaa.txt', 'w', encoding='utf8') as f:
f.write('你好世界\n')
a (只追加模式)
1.文件路径不存在会自动创建
2.文件路径存在光标会移动到文件末尾
eg:
with open(r'aaa.txt', 'a', encoding='utf8') as f:
f.write('啦啦啦')
补充
读取优化
eg:
with open(r'aaa.txt', 'r', encoding='utf8') as f:
for line in f: # 一行行读取文件内容 能够避免内存溢出
print(line)
操作模式
#t模式
文本模式(也是上述三种读写模式默认的模式)
rt
wt
at
1.该模式只能操作文本文件
2.该模式下必须指定encoding参数
3.读写都是以字符串为单位
#b模式
二进制模型
rb
wb
ab
1.该模式可以操作任意类型的文件
2.该模式下不需要指定encoding参数
3.读写都是以bytes(二进制)为单位