1 每日速记
allotment: n.分配;份额;<英>划分的土地
2 字符编码
??2.1字符编码的介绍
??字符编码只跟文本文件有关。 ??字符编码表:内部存储了计算机二进制数字与人类字符对应关系的表。
??2.2 字符编码的发展史
??一家独大: ??????ASCII码:记录了英文字母与数字的对应关系。通常用一字节(8bit,共可表示127个字符)来表示单个字符。 ??常见ASICII码:A-Z 65-90 a-z 97-112 ![ASCII码表](https://img-blog.csdnimg.cn/babd6f061dcd442a9381b99b7821cd0a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAd2VpeGluXzQwNTc0MTA5,size_17,color_FFFFFF,t_70,g_se,x_16
??群雄割据 ????GBK码(中国):《汉字内码扩展规范》,记录汉字与计算机数字的对应关系。 ??双字节编码,范围为:8140-FEFE
????shift_JIS码(日本): 一个日本电脑系统常用的编码表。它能容纳全角及半角拉丁字母、平假名、片假名、符号及日语汉字。
????Euc_kr码(韩国):用来储存韩国KSX1001字集(旧称KSC5601)的字符
??天下一统 ????unicode(万国码):是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。
????utf8(转换版本有多种,功能都是为了优化万国码的存储):UTF-8的特点是对不同范围的字符使用不同长度的编码。对于0x00-0x7F之间的字符,UTF-8编码与ASCII编码完全相同。UTF-8编码的最大长度是4个字节。
??2.3 字符编码的实际应用
????字符不乱码:只要保证源文本文件是用什么编码方案编码的,就用对应的编码方案解码。
????python解释器的编码方案的差异: ???????? python 2.x 默认使用ASCII码,因此在编译字符串时,需做如下操作: ????????1.增加文件头 ???????? 2.字符串前+‘u’
s1 = u'haha'
print(s1)
??2.3 编码与解码
编码(encode):人类的字符>>>计算机二进制 解码(decode):计算机二进制>>>人类的字符 字符串.encode(编码)
s = '哈哈'
print(s.encode('GBK'))
bytes.decode(解码)
s1 = b'\xb9\xfe\xb9\xfe'
print(s1.decode('GBK'))
3 python文件模式
??3.1文件操作
??取消转义
print('haha\n哈哈')
'''
haha
哈哈
'''
print(r'haha\n哈哈')
??with 上下文
- open与close使用
f = open(文件路径,读写模式,编码) f.close()
res = open(r'a.txt', 'r', encoding='utf8')
print(res)
print(res.read())
res.close()
'''
注释
open(文件路径,读写模式,字符编码)
文件路径与读写模式是必须的
字符编码是可选的(有些模式需要编码)
'''
- with语法会自动帮你关闭文件资源
with open(文件路径,读写模式,编码 as f: ??pass
with open(r'haha.txt', 'r', encoding='utf8') as f:
print(f.read())
??3.2 读模式(r)
关键字:r 1.文件不存在:报错
with open(r'a.txt','r',encoding='utf8') as f:
print(f.read())
2.文件存在,可通过关键字read获取文件信息,但只能读不能写
with open(r'haha.txt', 'r', encoding='utf8') as f:
print(f.read())
'''
dadadad
dadada
文件存在,打印文件所有内容
'''
??3.3 写模式(w)
关键字:w 1.文件存在,会先清空文件内容 ,再执行写入操作
with open('haha.txt', 'w', encoding='utf8') as f:
f.write('haha')
'''
原文件内容:
dadadad
dadada
现文件内容:
haha
'''
2.文件不存在,会创建新文件
with open('a.txt','w',encoding='utf8') as f:
f.write('\n 你好,世界')
'''
文件不存在,创建文件
'''
??3.4 追加模式(a)
1.文件存在,在文件光标尾部追加内容
with open('a.txt', 'a', encoding='utf8') as f:
f.write('haha')
'''
原文件:
你好,世界
新文件:
你好,世界haha
'''
2.文件不存在,创建文件
'''
with open('b.txt','a',encoding='utf8') as f:
f.write('你好呀,哈哈')
'''
创建新文件,内容为“你好呀,哈哈”
小总结:r,w,a模式只能操作文本文件
??3.5 文本模式(t)
1.文本模式为默认模式: ????r,w,a >>> rt wt at 2.该模式所有操作都是以字符串为基本单位(文本) 3.该模式必须指定encoding参数 4.该模式只能操作文本文件
??3.6 二进制模式(b)
1.该模式可以操作任意类型文件 2.该模式所有操作都是以bytes类型(二进制)为基本单位 3.该模式不需要指定encoding参数 ????rb,wb,ab
??3.7扩展:
文件操作方法扩展: (1)读模式: a. read()
with open(r'a.txt', 'r', encoding='utf8') as f:
print(f.read())
b. readline()
with open(r'a.txt', 'r', encoding='utf8') as f:
print(f.readline())
print(f.readline())
c. readlines()
with open(r'a.txt', 'r', encoding='utf8') as f:
print(f.readlines())
d. readable()
with open(r'a.txt', 'r', encoding='utf8') as f:
print(f.readable())
(2)写模式 a. write()
with open(r'a.txt', 'w', encoding='utf8') as f:
f.write('克服一切困难,奥利给!!!')
f.write(123)
b. writelines()
with open(r'a.txt', 'w', encoding='utf8') as f:
f.writelines(['jason', 'kevin', 'tony'])
可以将列表中多个字符串元素全部写入,jasonkevintony
c. writable() 判断文件是否有写的能力
with open(r'a.txt', 'w', encoding='utf8') as f:
print(f.writable())
print(f.readable())
d. flush()
with open(r'a.txt', 'w', encoding='utf8') as f:
f.flush()
|