字符编码与文件操作
1. 字符编码
1. 字符编码的介绍
字符编码是针对于文本文件的
2. 字符编码的发展史
1. 一家独大
计算机一开始是由美国人发明出来的,所以当发明字符编码时,没有考虑到中文,韩文,日文等语言,只有考虑到英文字符与数字对应的关系
此编码为ASCII码:英文字符与数字对应的关系
一个英文字母对应的是一个字节(bytes)
需要记住的ASCII码为:a-z:97-122 A-Z:65-90
2. 群雄割据
之后,其他国家也相继开始使用计算机 面临了相同问题,没有对应国家的语言的字符编码,所以陆续开始发明字符编码
GBK: 记录了中文,英文与数字的对应关系
1bytes(8bit)来表示英文
2bytes(16bit)来表示中文
但是大部分中文都是3个bytes
Euc_kr:记录了英文、韩文与数字的对应关系
shift_JIS:记录了英文、日文与数字的对应关系
因为有多个字符编码的出现,就会有个问题,当我们以GBK的字符编码进行书写程序时,发给其他国家,其他国家并不以GBK的字符编码进行翻译,会以自己国家的字符编码进行翻译,那么就会发生翻译乱码的现象
3. 天下一统
因为上面的情况出现,后续推出了万国码(unicode),任何国家都可以进行使用 unicode规定所有字符都是2bytes起步,这样会浪费空间,IO时间 而我们现在最常用的是utf-8是万国码的翻译版本 而我们电脑中硬盘使用的是utf8,而内存使用的是unicde
3.
编码: encode
将人类能够读懂的字符编码成计算机能够直接读懂的字符
解码: decode
将计算机能够直接读懂的字符解码成人类能够读懂的字符
解码时,字符串前面如果加了字母b 表示该数据类型为 bytes类型
bytes类型可以看成是二进制
基于网络传输数据 数据都必须是二进制格式,所以肯定涉及到编码与解码
2. 文件操作简介
1. 文件的定义 操作系统暴露给用户可以直接操作硬盘的快捷方式 2. 代码操作文件的流程 1.打开文件、创建文件 2.编辑文件内容 3.保存文件内容 4.关闭文件 3. 基本语法结构 结构1: f1 = open('文件路径', 文件操作, encoding=) f1.close() 结构2: with open('文件路径', 文件操作, encoding=) as f: pass 1.使用关键字打开文件 以后写路径为了防止特殊符号 直接加r''' open(r'a.txt') 此路径为相对路径 open(r'D:\py1\day09\a.txt') 此路径为绝对路径) open(文件的路径,文件的操作模式,文件的编码) 1.文件的路径是必须要写的 2.文件的操作模式、文件的编码有时候不用写(一会儿讲) res.read() # 读取文件内容 res.close() # 关闭文件 上述操作open完最后都需要执行close 而close这一行容易被遗忘 # with上下文管理 with open(r'a.txt', 'r', encoding='utf8') as f: data = f.read() print(data)
3.
r read 只读模式:只能读不能写 w write 只写模式:只能写不能读 a append 只追加模式:在文件末尾添加内容 r模式 路径不存在:直接报错 with open(r'b.txt', 'r', encoding='utf8') as f1: pass 补全语法结构 本身没有任何功能 路径存在:正常打开文件并等待内容读取 with open(r'a.txt', 'r', encoding='utf8') as f1: print(f1.read()) # 一次性读取文件内所有的内容 able在英语中大部分情况下表示的是 具备...的能力 readable 具备读的能力 writable 具备写的能力 w模式 路径不存在:自动创建文件 with open(r'b.txt', 'w', encoding='utf8') as f1: pass (推荐)补全语法结构 本身没有任何功能 路径存在:先清空文件内容 之后再写入数据 with open(r'a.txt', 'w', encoding='utf8') as f1: f1.write('你们是我见过的最优秀一批学生1\n') # 写入文件内容 print(f1.read()) 换行 最早的时候:\r\n 为了节省空间支持一个字符 根据操作系统的不同可能有所区别 \n 、 \r a模式 路径不存在:自动创建文件 with open(r'c.txt', 'a', encoding='utf8') as f1: pass 路径存在:不会清空文件内容 而是在文件末尾等待新内容的添加 with open(r'a.txt', 'a', encoding='utf8') as f1: f1.write('哈哈哈') print(f1.read()
4.
t模式 文本模式 是默认的模式 r rt w wt a at 1.该模式只能操作文本文件 2.该模式必须要指定encoding参数 3.该模式读写都是以字符串为最小单位 b模式 二进制模式 可以操作任意类型的文件 rb 不能省略b wb 不能省略b ab 不能省略b 1.该模式可以操作任意类型的文件 2.该模式不需要指定encoding参数 3.该模式读写都是以bytes类型为最小单位
5.
# 一次性读取文件内容 1.执行完之后光标在文件末尾 继续读取没有内容 2.当文件内容特别大的时候 容易造成内存溢出(满了) read() # 一次只读一行内容 readline() # 结果是一个列表 里面的各个元素是文件的一行行内容 readlines() # 判断当前文件是否可读 readable() # 写入文件内容(字符串或者bytes类型) write() # 可以将列表中多个元素写入文件 writelines() # 判断文件是否可写 writable() # 相当于主动按了ctrl+s(保存) flush()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人