今日总结
1.字符编码
- 字符编码的简介
- 字符编码的发展史
- 字符编码的实际应用
- 文件操作简介
2.文件操作
-
文件操作简介
-
文件的读写模式
-
文件的操作模式
-
文件的操作方法
-
文件补充说明4
内容详细
字符编码的简介
字符编码只针对文本文件
字符编码的发展史
因为计算机只有两种状态,就是0和1,所以当初人们就用英文字母来与数字对应,字符编码发展到现在一共经历过三个阶段: 1.一家独大:因为计算机是美国人发明的,所以一开始的时候,就只考虑到了英文字符与数字的对应关系,当时就只有美国一种叫做ASCII码的字符编码,里面只记录了英文字符与数字的对应关系, 1bytes(8bit)来表示英文,最基本的英文字母(A--Z)与数字对应就是(65--90),(a--z):(97--122)。 2.群雄割据:随着计算机的普及,其它国家也面临着相同的问题,就是字符编码就只有美版,没有自己国家的字符编码,用起来就相当不方便,于是每个国家就根据那份ASCII码再加上自己国家的文字进行改编。比方我国的叫GBK,里面就记录了英文、中文与数字的对应关系,但是因为中国汉字太多,所以我国一般都是用3bytes来表示中文。像韩国就是Euc_kr,里面就是记录了英文与韩文与数字的对应关系,所以各个国家就是英文加本国文字然后与数字对应的 3.天下一统:正是由于各国都有本国的字符编码,所以就造成了编写与翻译阶段使用的编码表不一致,然后就产生了乱码,为了解决这一现象,有人就发明了unicode编码,又叫万国码,就是通用的,但是因为unicode码所有的字符都是2bytes,会浪费空间和IO时间,所以就有更优化的版本叫utf8,内存使用的是unicode,而硬盘使用的是utf8.
字符编码的实际应用
# 1.编码与解码 编码(encode):就是将人类能够读懂的字符编码成计算机能够直接读懂的字符 如:s1 = '事已至此 何不一搏' print(s1.encode('gbk')) # 需要注意的是如果字符串前面加了字母b,表示该数据类型为bytes类型,bytes类型可以看成是二进制。 解码(decode):就是将计算机能够直接读懂的字符解码成人类能够读懂的字符 如:res = b'\xca\xc2\xd2\xd1\xd6\xc1\xb4\xcb \xba\xce\xb2\xbb\xd2\xbb\xb2\xab' print(res.decode('gbk')) # 基于网络传输数据,数据都必须是二进制格式。 # 2.如何解决乱码 * 数据当初是以什么编码编的就以什么编码解即可。 如:s1 = '事已至此 何不一搏' # 编码 res1 = s1.encode('gbk') print(res1) # 乱码 res2 = res1.decode('euc_kr') print(res2) # 解码 res3 = res1.decode('gbk') print(res3)>>>>>>>>>>>>正常显示 # 3.python解释器层面 在python2解释器中,默认的编码还是ASCII码,所以我们在用Python2解释器的时候要注意2点 *文件头必须写在文件的最上方,告诉解释器使用指定的编码 *在使用Python2解释器的环境下定义字符串习惯在前面加字母u. 在Python3中默认的编码是utf8
文件操作简介
# 文件就是操作系统暴露给用户可以直接操作硬盘的快捷方式 # 代码操作文件的流程 1.打开文件、创建文件 2.编辑文件内容 3.保存文件内容 4.关闭文件 # 基本语法结构 结构1 f1 = open()>>>>>>>>>>打开文件 f1.closs()>>>>>>>>>>>关闭文件 结构2 with open() as f: pass(pass只是补全语法,本身没有任何意义) # 使用关键字打开文件 以后写路径为了防止特殊符号,直接加r open(文件的路径,文件的操作模式,文件的编码) 1.文件的路径是必须要写的 2.文件的操作模式、文件的编码有时候不用写 # print(res.read())>>>>>>>>读取文件内容 # 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模式 * 路径不存在:直接报错 如:b.txt路径不在 with open(r'b.txt', 'r', encoding='utf8') as f1: * 路径1存在:正常打开文件并等待内容读取 如:a.txt路径存在的话 with open(r'a.txt', 'r', encoding='utf8') as f1: print(f1.read()) # 一次性读取文件内所有的内容 # w模式 *路径不存在:自动创造文件 with open(r'a.txt', 'w', encoding='utf8') as f1: pass *路劲存在:先清空文件内容,之后再写入数据 with open(r'a.txt', 'w', encoding='utf8') as f1: f1.write('呵呵\n')>>>>>>>>>>写入文件内容 \n与\r都是换行的 # a模式 *路径不存在:自动创建文件 with open(r'a.txt', 'a', encoding='utf8') as f1: pass *路径存在:不会清空文件内容,而是在文件末尾等待新内容的加入 with open(r'a.txt', 'a', encoding='utf8') as f1: f1.write('呵呵') print(f1.read())
文件的操作模式
# t模式:只能操作文本文件,而且必须要指定encoding参数,该模式最小单位是字符串 文本模式:t w a 默认模式:rt wt at # b模式:又叫二进制模式,可以操作任意类型的文件,该模式也不需要指定encoding参数,最小单位是bytes类型 rb,wb,ab都不能省略b
文件内置方法
read() # 一次性读取文件内容 1.执行完之后光标在文件末尾 继续读取没有内容 2.当文件内容特别大的时候 容易造成内存溢出(满了) readline() # 一次只读一行内容 readlines() # 结果是一个列表 里面的各个元素是文件的一行行内容 readable() # 判断当前文件是否可读 支持for循环 # 一行行读取文件内容(推荐使用) 内存中同一时刻只会有一行内容 write() # 写入文件内容(字符串或者bytes类型) writelines() # 可以将列表中多个元素写入文件 writable() # 判断文件是否可写 flush() # 相当于主动按了ctrl+s(保存)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人