day 08
day 08
一、字符编码
字符编码表就是纪律字符与数字一一对应的表
ASCII表:
1、只支持英文字符串
2、采用8位二进制数对应一个英文字符串
GBK表:
1、支持英文和中文字符串
2、采用8位二进制数对应一个英文字符串
采用16位二进制数对应一个中文字符串
unicode:(内存中统一使用unicode)
1、兼容万国字符串
2、采用16位(16bit=2bytes)二进制数对应一个中文字符串,各别生僻字采用4bytes、8bytes。
unicode的使用作为一个过度阶段,老的字符编码可以转换成unicode,但不能通过unicode互转。
utf-8:
1、英文-->1bytes、中文-->2bytes
结论: (用python3)
1、内存固定使用unicode,我们可以改变的是存入硬盘采用的格式
文+汉字--》unicode--》gbk
英文+日语--》unicode--》shfit-jis
万国文符---》unicode--》utf-8
2、文本文件存取乱码问题
存乱了:解决方法,编码格式应该设置成支持文件内字符串的格式
取乱了: 解决方法,文件是用什么格式存的就用什么编码格式读入。
3、python解释器默认读文件的编码
python3中默认的是utf-8
python2中默认的是ASCII
4、保证运行python程序前两个阶段不乱码的核心法则:
指定文件头
在py文件首行加上 #coding:文件存入硬盘时所采用的编码格式
5、pythone3中的str类型默认直接存储成unicode格式,无论如何都不会乱码
python2中想要保住str类型不乱码:
在py文件首行加上 #coding:文件存入硬盘时所采用的编码格式
x=u'上',在字符串前面加上u
6、编码:encode、解码:decode
x='上' # str类型=》被存成uncide
print(x) ## 上
x.encode('gbk')让unicode按gbk类型编码
x.decode('gbk')让unicode按gbk编码类型解码
二、文件管理
1、什么是文件:
文件是操作系统提供给用/应用程序操作硬盘的一种虚拟概念/接口
用户/应用软件
操作系统
计算机硬件(硬盘) #硬盘中的数据不能被修改,只能覆盖。
2、为何要用文件:
用户/应用程序可以通过文件将数据永久保存在硬盘中
即操作文件就是操作硬盘
用户和应用程序直接操作的是文件,对文件的所有操作,都是对操作系统发起系统调用,然后再由操 作系统转换成具体的硬盘操作。
3、如何使用文件:open()
控制文件读写内容的模式:t和b
强调b和t不能单独使用,必须与r/w/a连用
t文本(默认的模式)
1、读写都是以str(unicode)为单位的
2、文本文件
3、必须指定unicode='utf-8'
#强调:t 模式只能用于操作文本文件,无论读写,都应该以字符串为单位,而存取硬盘本质都是二进制的形式,当指定 t 模式时,内部帮我们做了编码与解码
b:读写单位二进制/Bytes,适用于所有文件,一定不能指定encoding参数。
控制文件的读写操作模式
read:只读模式,如果文件不存在则报错,文件存在的话文件指针处于文件开头。
write:只写模式,如果文件不存在则创建文件,文件存在就清空,文件指针处于文件开头。
write模式在文件打开而不关的情况下,连续的write写入,新内容永远在后面。
a:只追加模式,如果文件不存在则创建文件,文件存在不清空,文件指针在末尾。
跟write一样打开文件不关的情况下连续的write写入,新内容永远在后面。
不一样的是当关闭文件重新打开时,write的写入,新内容永远在后面
+:r+、 w+、+a(可读可写)
f = open(指定文件路径,指定文件模式,指定编码格式)
每次执行完程序必须执行f.close命令关闭文件资源
文件对象:数据和功能
with open(指定文件路径,指定读写模式,指定编码格式) as 变量名:
with子代码运行结束之后会自动调用close关闭文件资源
文件路径是必须的
读写模式和编码格式是可选的
如果不指定读写模式 那么默认使用r(只读)
如果不指定编码格式 那么默认使用当前计算机内部默认编码
在中国所有的windows电脑内部默认的编码是gbk
4、拷贝文件 :
with open('a.txt',mode='rt',encoding='utf-8') as f,open('b.txt',mode='wt') as f1:
res = f.read()
f1.write(res)
5. .readline() #读取一行内容,光标移动到第二行首部
6. .readable() #判断文件是否可读
7. .wirteable() #判断文件是否可写
8. .readlines() #把文件内容读成列表格式
9. .seek #移动指针
10. .close() #回收操作系统打开的文件资源
11. .flush() #刷新
12. .name() #查看文件名
13. .tell() #查看光标停的位置
.seek(字节个数,0):指针从开头开始移动
.seek(字节个数,1):开始时指针在开头,然后指针读到那停到那,再次移动时从上次停的位置开始
.seek(字节个数(负数),2):指针从末尾向左移动
案例1
#实现用户登录功能
创建一个文件a.txt把用户的账号密码存入到硬盘('cjz':123)
username = input('请输入你的用户名:').strip()
userpwd = input('请输入你的密码:').strip()
with open('a.txt',mode='rt',encoding='utf-8') as f:
for lin in f:
name,pwd==lin.strip('\n').split(':')
if username==name and