1. 字符编码
只跟文本和字符串有关
由于计算机内部只是别二进制,但是用户在使用计算机的时候却可以看到各种语言字符,字符编码就是内部记录了人类字符与数字对应关系的数据
1.1 字符编码史
1.一家独大
计算机由美国发明,因此美国人为了能让计算机识别英文字符诞生了ASCII码表
特点:
只有英文字符与数字的一一对应关系
一个英文字符对应1Bytes,1Bytes=8bit,8bit最多包含256个数字,可以对应256个字符,足够表示所有的英文字符,目前只用到127个,剩下的为了后续发现新的语言
需要记住的是:
A-Z: 65-90
a-z: 97-122
2.群雄割据
中国人
为了能够让计算机识别中文 我们需要发明另外一套编码表
GBK码:记录了英文中文与数字的对应关系
对于英文还是使用一个字节
对应中文使用两个字节甚至更多字节
"""两个字节其实也不够表示出所有的中文
遇到生僻字可能需要更多位来表示
"""
日本人
为了能够让计算机识别日文 也需要发明一套编码表
shift_JIS码:记录了日文英文与数字的对应关系
韩国人
为了能够让计算机识别韩文 也需要发明一套编码表
Euc_kr码:记录了韩文英文与数字的对应关系
3.天下一统
为了能够实现不同国家之间的文本数据能够彼此无障碍交流需要对编码统一
unicode(万国码)
统一使用两个及以上字符记录字符与数字的对应关系
utf8(万国码的优化版本)
将英文还是用一个字节存储
将中文使用三个字节或更多字节存储
'''现在默认使用的编码是utf8'''
1.2 编码操作
1.如何解决文件乱码
文件当初以什么编码编的,打开的时候就以什么编码解
2.python解释器不同版本的编码差异
python2.x内部使用的编码默认是ASCII
1.文件头
# coding:utf8
2.在python2中定义字符串前面需要加一个u
s = u'你'
python3.x内部使用utf8
3.Pycharm定义文件模板内容
4.编码与解码
编码
将人类能够读懂的字符安装指定的编码转换成数字
解码
将数字按照指定的编码转换成人类能够读懂的字符
s = '每天不要想太多 学就完事了 干就完了 奥利给!!!'
# 编码
# res = s.encode('utf8')
# print(res, type(res)) # bytes 在python中直接将该类型看成二进制数据即可
# 解码
# res1 = res.decode('utf8')
# print(res1)
2.文件
文件其实是操作系统暴露给用户操作硬盘的接口
2.1 文件操作
2.1.1 如何操作文件
关键字open()
1.open()打开文件
2.其他方法操作文件
3.关闭文件
2.1.2 路径斜杠
在路径中出现字母与斜杠的组合产生了特殊含义如何取消
在路径字符串前面加一个r
r'D:\py20\day08\a.txt'
2.1.3 操作文件
格式:
open(文件路径,读写模式,字符编码)
文件路径与读写模式是必须的
字符编码是可选的(有些模式需要编码)
eg:
res = open('a.txt', 'r', encoding='utf8')
print(res.read())
res.close()
2.1.4 with上下文管理
可以自动close()
eg:
with open(r'a.txt', 'r', encoding='utf8') as f1:
print(f1.read())
2.2 读写模式
2.2.1 只读模式 r
只能查看不能修改
# 当路径不存在时,直接报错
with open(r'b.txt','r',encoding='utf8') as f1:
pass # 运行代码报错
# 当路劲存在时,读取没有问题,写操作时报错
with open(r'a.txt','r',encoding='utf8') as f1:
print(f1.read()) # 能读取文件内容
f1.write('123') # 报错,无法写入
2.2.2 只写模式 w
# 当路劲不存在时,不会报错,会创建该文件
with open(r'b.txt', 'w', encoding='utf8') as f2:
pass
# 路劲存在时,写入会先清空文件内容,再写入内容
with open(r'a.txt','w',encoding='utf8') as f1:
print(f1.read()) # 读取会报错
f1.write('123') # 写入的都会在一行,不会自动换行
f1.write('\n123\n') # 需要加入换行符
2.2.3 只追加模式 a
# 当路劲不存在时,不会报错,同样会创建该文件
with open(r'c.txt', 'a', encoding='utf8') as f3:
pass
# 当路劲存在时,写入不会清空文件
with open(r'a.txt', 'a', encoding='utf8') as f1:
f1.write('\nwoooooo') # 需要加入换行符,否则都会在一行
f1.write('\nwoooooo')
print(f1.read()) # 读取会报错
3.debug代码调试
1.在代码右侧使用右键标记,空白处右键出现在Run下面有Debug运行
2.debug运行的时候会一步步执行,并给出每一步的结果
3.停止debug
4.取消小点