字符编码 读写模式 操作模式 文件操作
字符编码
文件操作
字符编码
计算机是基于电工作的 而电信号只有高低两种状态 也就是说计算机只认识两种状态 就是0和1就是二进制 人类的字符与数字之间的对应关系=发电报带的密码本 1.计算机是美国人发明的(想让计算机只认识英文)于是发明了ASCII码(记录英文与数字的对应关系) 2.各个国家都发明了自己的一套代码让计算机识别 中国人 GBK码(英文 中文 与数字的对应关系) 韩国人Euc_kr码(韩文 英文与数字的对应关系) 日本人shift_JIS码(日文 英文与数字的对应关系) 但是这样就导致各个国家的信息交互出现问题,因为没有储存其他国家的代码导致收到的全是乱码 3.于是就发明了一套通用的代码 unicode码(万国码) 所有国家的文字于数字的对应关系 于是在此基础上进行优化成了utf8(优化版本) 目前基本都使用这套代码 如果以后发现代码出现乱码肯定是因为字符编码选错了,只要切换字符编码就可以了
编码与解码
# 编码 按照指定的编码本将人类的字符编程成计算机能够识别的二进制数据
# 解码 按照指定的编码本将计算机的二进制数据解析成人类能够读懂的字符 res = '年轻不是挥霍的资本 年轻应该实现更多的成就' # 编码 res1 = res.encode('gbk') print(res1) # 解码 res2 = res1.decode('gbk') print(res2)
文件操作
# 第一种(推荐使用) with open(文件路径,读写模式,字符编码) as 变量名: with子代码
# 第二种(不推荐使用) 变量名 = open(文件路径,读写模式,字符编码) 一系列操作 变量名.colse()
读写模式
r (只读模式) 1.文件路径不存在会直接报错的 2.文件存在打开并且读取文件内部的内容 with open(r'aaa.txt', 'r', encoding='utf8') as f: print(f.read()) #只能一次性全部读取文件内容 w (只写模式) 1.文件路径如果不存在会直接创建新的文件 2.文件路径存在的话会删除这个文件本来的信息在写入新的 with open(r'aaa.txt', 'w', encoding='utf8') as f: f.write('你好你好你好\n')
a (只追加模式) 1.文件路径不存在也会自动创建 2.文件路径存在光标会移动到文件的末尾(在末尾直接添加文本)
补充的知识: 优化一下读取文件的方式 with open(r'aaa.txt', 'r', encoding='utf8') as f: for line in f: print(line) #一行一行的读取文件的内容,防止文件过大导致内存爆掉
操作模式
t模式 (文本模式)(上面的三种读写模式都是t模式) # rt wt ab 1.只能操作文本文件 2.必须指定encoding参数 3.读写均以字符串为单位 b模式 (二进制模式) # rb wb ab 1.可以操作任意类型的文件 2.不需要指定encording参数 3.读写以bytes(二进制)为单位