字符编码

1、知识储备
cpu
内存
硬盘
2 文本编辑器存原理
结论:在编写py的程序的时候,是没有语法的限制的,编辑的结果
跟编写一个普通的文本文件是没有任何区别,
只有把py程序交给python解释并且在运行的第三个阶段才有了
语言意义
3 python解释器执行python程序的原理
python3 test.py
第一阶段:先启动python解释器这个软件
第二阶段:把test.py文件的内容读入内存
第三阶段:解释执行,识别语法

 

4、什么是字符编码:人类的的字符翻译成计算机能读懂的语言(二进制)
人类的字符----》翻译-------》数字
翻译的过程必须遵循一个标准:字符与数字一一对应的关系
这个标准称之为字符编码表

ASCII
8bit=1bytes,一个英文字符占用1字节

GBK
16bit=2bytes ,2个字节表示一个中文字符

unicode(内存中固定的编码):
16bit=2bytes,2个字节表示一个字符

utf-8:Unicode Transformation Format(unicode的一种转换的版本)
3bytes表示一个中文字符


保证不乱码的核心就是:
文件是以什么编码存的,就必须以该读取
强调:我们能控制的只是存到硬盘上的编码


python3解释器:默认utf-8编码
python2解释器:默认ascii编码

文件头的作用:#coding:utf-8 是告诉python解释器,用我指定的字符编码

三:执行python程序第三个阶段发生的事
会识别python语法,定义的字符串类型又涉及到字符编码的概念
x='上' #x=str('上')
python2:
字符串分为两种形式:
x='上' #python2的str类型会按照文件头指定的编码来存‘上’

python3:
str:被存成了unicode
bytes:字节等同于二进制看

四:转换
unicode---编码encode--->gbk
gbk------->解码decode---》unicode


文件处理:

默认的是t模式,t不能单独使用,必须是rt,wt,at。
1、打开文件
f=open(r'文件的路径’,mode='打开文件的模式’,encoding='操作文件的字符编码’)
f=open(r'a.txt',mode='r')

2.读/写:
data=f.read()


3.关闭文件
f.close() #回收操作系统的资源。

 

文件操作的模式有三种:r,w,a
f=open('a.txt') 默认打开文件的模式是rt模式,r代表只读,t代表文本文件

r模式:只读模式,当文件不存在时会报错

f.open('a.txt',moed='r',encoding='utf-8')

print(f.read())    #读出来是字符串为单位

 

with open('a.txt',encoding='utf-8') as f:

for line in f:

 print(line,end='')      #优先使用此方法,循环读取每一行的内容。

 

for line in f.readlines()

print(line,end='')    #循环文件不建议用此方法,因为在文件过大的情况下有可能会撑爆内存。

 

w模式:只写模式,当文件存在时则清空,当文件不存在时则创建新的空文档

f=open('a.txt',mode='w',encoding='utf-8')

f.write('123456\n')

 

f.writelines(['1111111\n','222222\n','3333333\n'])      #相当于for循环

f.close()


a模式:只追加写模式,当文件不存在时,创建文件,当文件存在时,光标直接跑到文件末尾。

f=open('b.log',mode='a',encoding='utf-8')

print(f.writable())

f.readlines()    #报错

f.write('66666\n')

f.close()

 

posted on 2018-03-23 15:38  muzinianhua  阅读(66)  评论(0编辑  收藏  举报