字符编码和with 和文件打开模式
1.字符编码
1.1 什么是字符编码?
人类在与计算机交互时,用的都是人类能读懂的字符,如中文字符、英文字符、日文字符等
1.2 字符编码表的发展史 (了解)
一、一家独大 二 、诸侯割据、天下大乱 三、分久必合 逐渐统一
1.3 编码与解码
由字符转换成内存中的unicode,以及由unicode转换成其他编码的过程,都称为编码encode
由内存中的unicode转换成字符,以及由其他编码转换成unicode的过程,都称为解码decode
>若想保证不乱码
>1、保证存不乱
>存入硬盘的编码格式要能识别输入的字符
>2、保证读不乱
>存取硬盘用得都是同一种字符编码格式
>3、往硬盘存的新文件以后都存成utf-8格式
python3解释器默认读文件的编码格式是utf-8
python2解释器默认读文件的编码格式是ASCII
推荐用python3解释器,因为python3解释器存字符串类型的值会存储unicode格式
如果用到python2解释器,记得在字符串类型前加前缀u
2.with用法
with open('db.txt',mode='rt',encoding='utf-8') as f:
写了with之后可以不用关闭f.close f可以被循环打印出来 可以进行read 或者write 并返回一个文件对象赋值给一个变量f
3.文件打开模式
一 控制文件读写内容
t(默认):无论读写都是以字符串为单位的,必须指定encoding参数
b:无论读写都是以bytes为单位的
二 控制文件读写操作
r(默认):只读模式
w:只写
a:只写(追加写)新写的内容加到旧的内容后面
前面的r代表rawstring原生的字符串,\没有转移的意思 只是个字符
r:如果不存在则报错,如果文件存在则指针置于文件开头
with open(r'a.txt',mode='rt',encoding='utf-8') as f:
print(f.read())
print('='*50)
print(f.read())
for line in f:
print(line)
f.write("你好")
w:如果不存在则创建空文档,如果文件存在则清空,创建一个新文档覆盖掉旧的文档,指针置于文件开头
with open('a.txt',mode='wt',encoding='utf-8') as f:
f.write("你好啊1\n")
f.write("你好啊2\n")
f.write("你好啊3\n")
print(f.read())
a:如果不存在则创建空文档,如果文件存在则加到后面,指针置于文件末尾
with open('c.txt',mode='at',encoding='utf-8') as f:
f.write("你好啊1\n")
f.write("你好啊2\n")
f.write("你好啊3\n")
print(f.read())