3.26Day07字符编码;文件操作

今日内容:
1、字符编码:
人识别的语言与机器识别的语言转化的媒介 (*****)
2、字符与字节
3、文件操作


一、字符编码
计算机三大核心硬件:
CPU :将数据渲染给用户,中央处理器
内存 :临时存放数据,断电后消失
硬盘 :永久存储数据,断电后还有

重点:
1. 什么是字符编码:将人识别的字符转换计算机能识别的01(二进制标识符),转换的规则就是字符编码表
2. 常用的编码表:ascii、unicode、GBK、Shift_JIS、Euc-kr
3. 编码操作:编码encode()、解码decode()

编码表:人类识别的字符标识符 与 计算机识别的01标识符 的对应关系

10 =》000100000
'a' =》10001000
'好' => 10101010
这样的对应关系形成的结构称之为: 编码表

中国汉字编码: GBK (***)

乱码:
存数据与读数据采用的编码表不一致
按存的方式来取就不会乱码

py2默认按ASCII来解释文件内容 | py3默认按UTF-8来解释文件内容

文件头:
encoding:编码表
功能:告诉py解释器安装什么编码来解释文件内容

需要制造一个可以完成万国字符与计算机01标识相对应的编码表
万国编码表: unicode表
py2:ascii,没有采用万国编码来解释文本内容,因为py2先诞生与万国编码
py3:utf-8,采用万国编码来解释文本内容,因为py3后诞生于万国编码

unicode与utf-8的关系:
unicode:用2个字节来存储汉字,用2个字节来存储英文字母,占有空间较多,读取效率极高
utf-8:用3-6个字节来存储汉字,用1个字节来存储英文字母,占有空间较少,读取效率低

总结:
内存都是按unicode来存储数据,因为读取效率高
所占空间越小,读取速度越快
utf-8 更省空间,因为代码绝大多数都是英文写的
存数据用utf-8,读数据用unicode
unicode 和 utf-8 用的是同一张unicode编码表,utf-8是unicode编码表的一种体现方式,变长存储数据
utf-8存数据时变是数据的0101变长
变长优点:(大量数据都是以英文存在,所以utf-8空间更小)因为字节小,所以读取的速度更快

三种字符串:
# unicode字符串,默认字符串
s1 = u'abc你好\n不好'
print(s1)
RUN====》
abc你好
不好

# 字节字符串
s2 = b'abc123\xb7\xb7'
print(s2)
RUN====》
b'abc123\xb7\xb7'

# 原义字符串: 不对字符串内存做任何操作(eg:\n的转化)
s3 = r'abc你好\n不好'
print(s3)
RUN====》
abc你好\n不好

# 编码与解码
s = '123呵呵'
n_b = bytes(s, encoding='utf-8')
print(n_b)
RUN====》
b'123\xe5\x91\xb5\xe5\x91\xb5'

b = b'123\xe5\x91\xb5\xe5\x91\xb5'
n_s = str(b, encoding='GBK')
print(n_s)
RUN====》
123鍛靛懙

重点:*****
# 将u字符串编码成b字符串
print(u'你好'.encode('uft-8'))
RUN====》
b'\xe4\xbd\xa0\xe5\xa5\xbd'

# 将b字符串转码成u字符串
print(b'\xe4\xbd\xa0\xe5\xa5\xbd'.decode('utf-8'))
RUN====》
你好

二、文件操作
文件:硬盘中一块存储空间(虚拟的文件)
文件操作:根据文件名来操作硬盘的那块存储空间
操作方式:读read | 写 write

知识点:
1、使用文件的三步骤
2、模式
3、常用的方法(变量)
4、文件操作的案例

1、使用文件的三步骤
# 基础读:
1.1 打开文件
变量名 = 文件空间
文件路径 -- 操作模式(读 | 写)-- 编码
f = open('a.txt','r',encoding='utf-8')

1.2 操作文件
data = f.read() # 将所有内容读取出来,如果设置读取长度,就按照规定长度读取数据
print(data)

data = f.read(3) # 将所有内容读取出来,如果设置读取长度,按照规定长度读取数据
print(data)

一次读取一行
line = f.readline()
print(line)
line = f.readline()
print(line)

按行一次性全部读出
lines = f.readlines()
print(lines)

逐步一行一行读取
l = []
for line in f:
print(line)
l.append(line)
print(l)

s = set()
for line in f:
print(line)
s.add(line)
print(s)


1.3 关闭文件c
f.close() # 释放操作系统对文件的持有,变量f还被应用程序持有

二、模式:
主模式:r:读 | w:写 | a:追加
从模式:b:按字节操作 | t:按字符操作 | +:可读可写
了解:x:异常写 | U:被遗弃了

基础写:
# 文件不存在:会新建文件
# 文件存在:先清空文件,再操作文件
w = open('b.txt', 'w', encoding='utf-8')
w.write('123')
w.close()
操作文件:读:read | 写:write
posted @ 2019-03-26 14:17  输诚  阅读(91)  评论(0编辑  收藏  举报