字符编码

unicode encode 保存文件 –》硬盘utf8 二进制 —>decode读取文件—>内存unicode

python3 默认文件编码是utf8 默认字符串编码是unicode
1.程序执行前,程序代码先加载到内存中,所占的内存为unicode编码的二进制

1
2
3
4
5
6
7
8
9
10
11
12
x='morgana'程序执行时,临时申请的内存空间unicode编码的二进制
y='morgana'.encode('utf8') 程序执行时 临时申请的内存空间utf8编码的二进制

python2 默认ASCii码
x='盖'
print(x)

y='盖'.encode('utf-8') #保存文件
print(y)
py2:unicode-->encode(编码后)-->bytes=str
py3:unicode
windows cmd 默认 gbk

1
2
3
4
5
6
 
f.seek(3) #字节
f.seek(3,0)#0 按照文件开头 1代表文件当前位置 2文件末尾位置
f.tell() #告诉你当前光标的位置
f.truncate() #截断 后面的都不要 写操作
f.readlines() #读成一个列表

#1.依赖于索引 把大文件直接读到内存 不合理

1
2
3
 
for i in range(len(l))
print(l[i])

#2.不依赖于索引 优点读一行打印一行 文件大小没关系

1
2
3
4
5
6
7
8
9
10
11
 
for line in f:
print(line,end='')


for line in read_f:
if 'morgana' in line:
print('ok')
else:
write_f.write(line)

#3.readline

1
2
3
4
5
6
7
8
9
10
 
def readhotile(OLDFILE):
with open(OLDFILE,'r',encoding="utf-8") as f :
dic1={}
done=0
while not done:
line=f.readline()
else:
done =1

-