字符编码+文件
字符编码简介
字符编码只针对文本文件(音频、视频、图片都不可以)
一开始是美国人发明的数字与英文的对应关系,叫ASCII码 (1bytes也就是8bit表示英文)
记忆:A-Z 对应 65-90 a-z 对应 97-120
后面中国使用计算机,发明GBK码,韩国发明Euc_kr,日本发明shift_JIS,但是不同码表翻译会出现乱码
最后天下一统,使用unicode万国码 (所有的字符都是2bytes起步存储 会浪费空间和IO时间)
utf8:万国码的转换版本,内存使用unicode,硬盘使用utf8
字符编码的实际应用
编码(将人类能够读懂的字符编码成计算机能够直接读懂的字符) encode
解码(将计算机能够直接读懂的字符解码成人类能够读懂的字符) decode
s1 = '事已至此 何不一搏'
#编码 encode
print(s1.encode('gbk'))# 括号里面是编码的类型
#b'\xca\xc2\xd2\xd1\xd6\xc1\xb4\xcb \xba\xce\xb2\xbb\xd2\xbb\xb2\xab'
"""
字符串前面如果加了字母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'))
python解释器层面(了解即可)
python2解释器默认的编码是ASCII码(如果在python2中直接写中文看不懂)
1.文件头:必须写在文件的最上方 告诉解释器使用指定的编码
# coding:utf8
# -*- coding:utf8 -*- 美化写法
2.字符前缀:在使用python2解释器的环境下定义字符串习惯在前面加u
name = u'你好啊'
python3解释器默认的编码是utf8(如果是python3则不用管)
文件操作简介(文件:操作系统暴露给用户可以直接操作硬盘的快捷方式)
打开、编辑、保存、关闭文件
方法一:(不常用)
f1 = open() #如果没有
f1.close()
open(r'a.txt') # 相对路径 只适用于同一层级的文件
open(r'D:\py1\day09\a.txt') # 绝对路径(以后写路径为了防止特殊符号 直接加r)
用方法一打开,需要自己输入close进行关闭
方法二:(推荐使用)
with open() as f:
这种相当于f = open(),进行了赋值,后面用完不需要手动关闭,直接with内部给变成close关闭
文件的读写模式
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()) # 一次性读取文件内所有的内容
f1.write('python是最牛逼的语言!!!') # 报错 只读不写
"""
w模式 路径不存在:自动创建文件 with open(r'b.txt', 'w', encoding='utf8') as f1: 路径存在:先清空文件内容 之后再写入数据 #使用时候小心,否则把之前的文档都清除了 with open(r'a.txt', 'w', encoding='utf8') as f1: f1.write('你们是我见过的最优秀一批学生1\n') # 写入文件内容 f1.write('你们是我见过的最优秀一批学生2\r') # 写入文件内容 f1.write('你们是我见过的最优秀一批学生3\n') # 写入文件内容 print(f1.read()) #不可读 """ 换行 最早的时候:\r\n 为了节省空间支持一个字符 根据操作系统的不同可能有所区别 \n 、 \r """
a模式(append)
路径不存在:自动创建文件
with open(r'c.txt', 'a', encoding='utf8') as f1:
路径存在:不会清空文件内容 而是在文件末尾等待新内容的添加
with open(r'a.txt', 'a', encoding='utf8') as f1:
f1.write('哈哈哈哈或或或或或') #可以在尾部添加
print(f1.read()) #不可读,报错
文件的操作模式
t模式
文本模式 是默认的模式
r rt
w wt
a at
1.该模式只能操作文本文件
2.该模式必须要指定encoding参数
3.该模式读写都是以字符串为最小单位
b模式
二进制模式 可以操作任意类型文件
rb 不能省略b
wb 不能省略b
ab 不能省略b
1.该模式可以操作任意类型的文件
2.该模式不需要指定encoding参数
3.该模式读写都是以bytes类型为最小单位
文件内置方法
read() # 一次性读取文件内容 1.执行完之后光标在文件末尾 继续读取没有内容 2.当文件内容特别大的时候 容易造成内存溢出(满了) readline() # 一次只读一行内容 readlines() # 结果是一个列表 里面的各个元素是文件的一行行内容 readable() # 判断当前文件是否可读 支持for循环 # 一行行读取文件内容(推荐使用) 内存中同一时刻只会有一行内容 write() # 写入文件内容(字符串或者bytes类型) writelines() # 可以将列表中多个元素写入文件 writable() # 判断文件是否可写 flush() # 相当于主动按了ctrl+s(保存)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统