字符编码简介
字符编码只针对文本文件(音频、视频、图片都不可以)
一开始是美国人发明的数字与英文的对应关系,叫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(保存)
标签:f1,编码,utf8,模式,文件,字符,open From: https://www.cnblogs.com/Milk1/p/17505142.html