字符编码的的实际应用
1.编码与解码
编码:将人类能够读懂的字符编码成计算机能够直接读懂的字符
解码:将计算机能够直接读懂的字符解码成人类能够读懂的字符
s1 = '你搞什么飞机' # 编码 encode # 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.如何解决乱码问题
数据当初以什么编码编的就用什么编码解即可
res1 = s1.encode('gbk') print(res1) # 编码 res2 = res1.decode('euc_kr') print(res2) # 乱码 res3 = res1.decode('gbk') print(res3) # 正常显示
3.python解释器层面
python2解释器默认的编码是ASCII码
1.文件头:必须写在文件的最上方 告诉解释器使用指定的编码
# coding:utf8
# -*- coding:utf8 -*- 美化写法
2.字符前缀:在使用python2解释器的环境下定义字符串习惯在前面加u name = u'你好啊' python3解释器默认的编码是utf8
文件操作简介
什么是文件
操作系统暴露给用户可以直接操作硬盘的快捷方式
代码操作文件的流程
1.打开文件、创建文件
2.编辑文件内容
3.保存文件内容
4.关闭文件
基本语法结构
结构1(了解即可):
f1 = open()
f1.close()
结构2(推荐使用):
with open() as f
1.使用关键字打开文件
'''写路径为了防止特殊符号,直接加r'''
open(r'1.txt') # 相对路径(即自己相对与目标位置) open(r'D:\pythonProject1\1.txt') #绝对路径(文件在硬盘上真正存在的路径) res = open (r'1.txt','r',encoding = 'utf8')
'''
open(文件的路径,文件的操作模式,文件的编码)
1.文件的路径是必须要写的
2.文件的操作模式、文件的编码有时候不用写
'''
print(res.read()) # 读取文件内容 res.close() # 关闭文件
'''上述操作open都需要执行close,而close这一行很容易被遗忘'''
#with 上下文管理 with open(r'1.txt','r',encoding='utf8') as f: #f = open() data = f.read() print(data)
文件的读写模式
r read 只读模式:只能读不能写
w write 只写模式:只能写不能读
a append 只追加模式:在文件末尾添加内容
r模式
路径不存在:直接报错
with open(r'2.txt', 'r', encoding='utf8') as f1: pass
pass (推荐使用)补全语法结构 本身没有任何功能
... (不推荐)补全语法结构 本身没有任何功能
路径存在:正常打开文件并等待内容读取
with open(r'1.txt', 'r', encoding='utf8') as f1: #print(f1.read()) # 一次性读取文件所有的内容 f1.write('jhdgfjhvs') #报错 可读不可写
w模式
路径不存在:自动创建文件
路径存在:先清空文件内容 之后再写入数据
with open(r'1.txt', 'w', encoding='utf8') as f1: f1.write('jhdgfjhvs\n') f1.write('jhdgfjhfsa\n') f1.write('jhdgfjhasfsaf\n')
a模式
路径不存在:自动创建文件
with open(r'3.txt','a',encoding='utf8') as f1: pass
路径存在:不会清空文件内容,而是在文件末尾等待新内容的添加
with open(r'1.txt','a',encoding='utf8') as f1: f1.write('没那本事学开发')
文件的操作模式
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() # 可以将列表多个元素写入文件
writeable() # 判断文件是否可写
flush() # 相当于Ctrl + s ,保存
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)