首页 > 代码库 > 字符编码及文件操作
字符编码及文件操作
一,字符编码
1,什么是字符编码
计算机要想工作必须通电,也就是说‘电’驱使计算机干活,而‘电’的特性,就是高低电平(高低平即二进制数1,低电平即二进制数0),也就是说计算机只认识数字
很明显,我们平时在使用计算机时,用的都是人类能读懂的字符(用高级语言编程的结果也无非是在文件内写了一堆字符),如何能让计算机读懂人类的字符?
必须经过一个过程:
字符--------(翻译过程)------->数字
这个过程实际就是一个字符如何对应一个特定数字的标准,这个标准称之为字符编码
2,字符编码的使用
上图所示,就是文本编辑器储存文件和编辑文件的过程:首先运行文本编辑器这个应用软件,然后将要打开的文件通过decode解码成unicode形式读到内存中。
最后储存的时候是存到硬盘中的,为了节省资源,存储过程中,将unicode格式的二进制数在通过encode编码的过程存到硬盘中。
但注意的一点是:用什么编码就要用什么解码,不然就会出现乱码的情况。
unicode跟utf-8的区别:
首先它们都是万国码,可以兼容各个国家的语言,但unicode把所有的语言都存成两个字节,对于一些不需要占用两个字节的语言来说(一个字节就可以搞定的语言)
太浪费空间,所以就产生了utf-8,它可以判断字节的大小,从而省下了一定的内存空间,所以在硬盘中存储一般du用utf-8,但是因为要判断,所以运行速度明显降低,
所以内存中就用unicode。
Python解释器执行代码的过程:
读取已经加载到内存的代码(unicode编码的二进制),然后执行,执行过程中可能会开辟新的内存空间。
而执行过程中的编码就可以放任何形式的编码了,python3默认的是utf-8的格式,而python2默认的是ASCII码格式。
可以在文件开头用#coding:utf-8更改默认格式。
二,文件操作
1,文件操作流程
- 打开文件,得到文件句柄并赋值给一个变量
- 通过句柄对文件进行操作
- 关闭文件
2,基本操作
r 读文件
# f=open(‘1.1.py‘,encoding=‘utf-8‘)#打开文件 # print(f.readable(),end="") #查看文件是否可读 # print(f.readline(),end="")#读一行 # print(f.readline(),end="") # print(‘-‘*60)#这是分割线 # print(f.read())#读剩下的文件 # f.close()#关闭文件
w写文件
# f=open(‘wxp.txt‘,‘w‘,encoding=‘utf-8‘) # f.write(‘我有一头小毛驴\n‘)#写入文件 # f.writelines([‘我从来都不骑\n‘,‘有一天我心血来潮\n‘])#写多行 # f.close()
a追加
# f=open(‘wxp.txt‘,‘a‘,encoding=‘utf-8‘) # f.write(‘骑它去赶集\n‘) # f.writelines([‘握握手\n‘,‘敬个礼\n‘]) # f.close()
3,文件打开模式
打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。
打开文件的模式有:
- r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
- w,只写模式【不可读;不存在则创建;存在则清空内容】
- x, 只写模式【不可读;不存在则创建,存在则报错】
- a, 追加模式【可读; 不存在则创建;存在则只追加内容】
"+" 表示可以同时读写某个文件
- r+, 读写【可读,可写】
- w+,写读【可读,可写】
- x+ ,写读【可读,可写】
- a+, 写读【可读,可写】
"b"表示以字节的方式操作
- rb 或 r+b
- wb 或 w+b
- xb 或 w+b
- ab 或 a+b
注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码
4,上下文管理
with open(‘wxp.txt‘,‘a‘,encoding=‘utf-8‘) as f : #这样打开就不用关闭了,自动会关闭。 f.read()
5,文件的修改
import os with open(‘wxp.txt‘,‘r‘,encoding=‘utf-8‘) as f_read, open(‘wxp_swap‘,‘w‘,encoding=‘utf-8‘) as f_write: for line in f_read: data=line.replace(‘我‘,‘他‘) f_write.write(data) os.remove(‘wxp.txt‘) os.rename(‘wxp_swap‘,‘wxp.txt‘)
字符编码及文件操作