一、字符编码
1、Python解释器执行Python程序的原理
第一阶段:先启动Python解释器这个软件
第二阶段:把.py文件的内容读入内存
第三阶段:解释执行,识别语法
2、什么是字符编码?
字符编码就是字符与数字一一对应关系的标准。
8bit(比特) = 1bytes(字节)
一个英文字符占用1个bytes,也就是8bit,也叫ASCII码
GBK:2个字节表示一个中文字符,1个字节表示一个英文字符
unicode:2个字节表示一个字符(中文、英文等也是2个字节)
utf-8:unicode的一种转换版本,1个字节表示一个英文字符,3个字节表示一个中文字符
内存固定为unicode编码,不能修改。我们能控制的只是存到硬盘上的编码。
3、指定编码
python3解释器默认用utf-8编码,python2解释器默认用ASCII编码
乱码的根本解决方法:文件存取用同一种编码标准(如utf-8)
python中指定编码,在文件头写下:#coding:utf-8
unicode转成gbk,utf-8叫编码encode
gbk,utf-8转成unicode叫解码decode
二、文件处理
文件是操作系统提供给应用程序操作硬盘的一个虚拟单位,用于应用程序将数据永久保存。
1、文件操作步骤:打开文件----读/写----关闭文件
文件打开语法:
open(r'文件的路径', mode = '打开文件的模式', encoding = '操作文件的字符编码')
python提供了自动打开和关闭文件,语法:
with open(r'文件的路径',mode='打开文件的模式',encoding='操作文件的字符编码') as 变量名:
2、文件操作方法:
读:
.read() 读出文件所有的内容,光标移到文件末尾
.readline() 一次读一行,光标移到第二行行首
.readlines() 读出文件所有的内容,以行为单位,存在列表中
写:
.write() 针对文本模式的写,需要自己写换行符
.writelines() 把列表或元组里面的值取出来,放进文件中
循环读取文件每一行的方式:
for line in f:
print(line, end='')
3、文件的打开模式
t,b
1)、t模式:
text文本模式,只能读写文本文件。读写文件是以字符串为单位,需要指定字符编码
2)、b模式:
读写都是以bytes字节为单位,与t模式类似,不能单独使用,必须是rb、wb、ab,b模式下一定不能指定encoding字符编码
4、文件的操作模式
r(read),w(write),a(append)
r:只读模式,文件不存在则报错;文件存在,光标停在文件开头
w:只写模式,当文件存在时,清空;当文件不存在时,创建空文档,光标停在文件开头
a:只追加写模式,当文件不存在时,创建空文档;当文件存在时,光标直接跑到末尾(大多用于记录日志)
5、修改文件的方式
方式一、先把文件全部读入内存----然后在内存中完成修改----再把修改后的结果覆盖写入原文件
缺点:会在内容过大的情况下,占用过多的内存
方式二、以读的方式打开原文件,以写的方式打开一个新文件----读一行原文件内容,如果该行内容时需要修改的内容,则写入新文件----删掉原文件,将新文件重命名为原文件
6、拷贝文件
解释器交互式拷贝命令:python src_file_path dst_file_path
py文件拷贝文件代码:
import sys
i = sys.argv #这一行的意思是把命令行中解释器后所有的参数都存成列表
print(i)
src_file_path = i[1]
dst_file_path = i[2]
with open('原文件路径', mode = 'rb') as src_file,
open('拷贝文件路径', mode = 'wb') as dst_file:
for line in src_file:
dst_file_write(line)