字符编码和文件处理

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

二:什么是字符编码
人类的字符----》翻译-------》数字
翻译的过程必须遵循一个标准:字符与数字一一对应的关系
这个标准称之为字符编码表

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

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

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

utf-8:Unicode Transformation Format
1字节表示一个英文字符,3bytes表示一个中文字符



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


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

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

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

python3:
str:被存成了unicode


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

print(2**16-1)

结论:要想不出现乱码的情况,就必须保证当时文件以什么编码存的,就以什么编码读取!



文件处理
1、打开文件
f=open(r'文件的路径',mode='打开文件的模式',encoding='操作文件的字符编码')
f=open(r'a.txt',mode='r')
print(f)
#2、文件读/写
data=f.read()
print(data)

#3、关闭文件(关闭文件的操作系统)
f.close() #回收操作系统的资源
# print(f)
# f.read()
# del f
# x=1


操作文件的模式有三种:r,w,a
文件默认的打开模式是t模式:文本模式,只能处理文本文件

#r:默认的打开模式,只读模式
#注意:当文件不存在时,报错

#w:只写模式
#注意
# 1、当文件存在时,清空该文件的内容
# 2、当文件不存在时,创建空文档

# f=open(r'a1.txt',mode='w',encoding='utf-8') #默认是wt
# # f.write('第一行\n')
# # f.write('第二行\n')
#


#a:只追加写模式(类似于在文件内容最后面添加新的内容)
#注意:
#在文件不存在时,创建空文件
#在文件存在时,光标直接跑到文件末尾


操作方法
f.read() #读取全部内容
f.readline()
f.readlines()


f.write('1111111\n222222\n') #写多行,注意要写换行符
f.writelines(['1111\n','2222\n']) #写一行

循环读取文件每一行内容:
for line in f:
print(line)

posted @ 2018-03-22 16:57  鲁之敬  阅读(106)  评论(0编辑  收藏  举报