一 今日内容
1 字符编码:人识别的语言与机器识别的语言转化的媒介*****
CPU:将数据渲染给用户,中央处理器
内存:临时存放数据,断电后消失
硬盘:永久存储数据,断电后还在
乱码:存数据与读书节采用的编码表不一致
软件打开文件读取数据的流程:
1 打开软件
2 往计算机发送一个打开文件的指令,来打开文件
3 读取数据渲染给用户
python解释器打开文件
1 打开软件(python解释器)
2 往计算机发送一个打开文件的指令,来打开文件
3 逐行解释打开的文件内容(存取编码不一致,无法正常解释,崩溃),将执行结果展示给用户
解释失败的原因:
python2默认按照ASCII来解释文件内容 | python3默认按UTF-8解释文件内容
文件头: 格式 # encoding:编码表
功能:告诉python解释器按照什么编码来解释文件内容
什么是字符编码
人类能识别的是字符等高级标识符,电脑只能识别0,1,要完成人与机器之间的信息交流,
一定需要一个媒介,进行两种标识符的转化(两种标识符的对应关系)
对应关系形成的结构称之为:编码表
编码表有哪些类型:
了解:编码表的发展史
1 ascii(ASCII):字母,数字,英文符号与计算机01标识符的对应关系
2 中国:研究汉字与计算机01标识符的对应关系:改变GB2312=>GNK(***)=>GB18030
日本:shift_JIS
棒子:Euc-kr
3 制造一个可以完成万国字符与计算机01表示福的对应关系的编码
万国编码表:unicoad表
python2:用ASCII来读数据,没有按万国编码读,源影视python2先诞生万国编码
python3:UTF-8,采用万国编码来解释文本内容
思考:unicode与utf-8什么关系
unicode:用2个字节来存储汉字,用2个字节来存储英文字母,占有空间校多,读取效率极高
utf-8:用3-6个字节来存储汉字,用1个字节来存储英文字母,占有空间较少,读取效率低
总结:
内存都是按unicode存储数据,硬盘和cpu采用utf-8来存取数据
unicode与utf-8采用的是一张编码表,utf-8是unicode编码表的提现方式,变长存储数据
变长存取数据优点:(大量数据都是一英文存在,所以utf-8空间更小)传输速度跟快
三种字符串
unicode字符串,默认字符串
s1 = u'abc你好
不好'
print(s1)
字节字符串
s2 = b''
原义字符串:不对字符串内部组任何操作
s3 = r'abc你好
不好'
print(s3)
编码与解码
s = '123呵呵'
n_b = bytes(s,encoding = 'utf-8')
print(n_b)
b = b'123xe4xbdxa0xe5xa5xbd'
n_s = str(b,encoding='GBK')
print(n_s)
将u字符串编码成b字符串
u''.encode()
print(u'你好'.encode('utf-8'))
将b字符串编码成u字符串
b''.decode
print(b'xe4xbdxa0xe5xa5xbd'.decode('utf-8'))
2 字符与字节:字符占多少字节:字符串转换***
3 文件操作:操作硬盘中的一块区域:读写操作*****
计算机中的文件:硬盘中一块存储(虚拟的文件)
文件操作:根据文件名来操作硬盘的那块存储空间,操作方式 read 和 write
1 三步骤: 打开文件------使用文件------关闭文件
a 打开文件
变量名 = 文件空间
文件的路径 操作模式(读|写)编码
f = open('a.txt','r',encoding='utf-8')
b 操作文件
data = f.read() ps 将所有内容读取出来,如果设置读取长度,按照规定长度读取数据
print(data)
一次一行
line = f.readline()
print(line)
多行读取 按行一次性全部读出
lines = f.readlines()
print(lines)
逐行读取
l = []
for line in f;
# print(line)
l.append(line)
print(1)
c 关闭文件
f.close() #释放操作系统对文件的持有,变量F还被引用的程序持有
print(f)