字符编码与文件操作
![image]()
1.pycharm下的debug模式
1.11 先用鼠标左键在需要调试的代码左侧点击一下(出现一个红点)
1.2 之后右键点击debug运行代码
1.3 在debug运行窗口有分布运行,也有跳过选中代码块运行操作
2.字符编码
2.1字符编码含义
'''
由于计算机只能够识别二进制的数,但用户在使用计算机的时候,
计算机呈现给用户的却是各式各样的语言
而字符编码就是内部记录了人类语言和数字对应关系的数据
'''
2.2字符编码发展史
# 2.2.1 一家独大
'''计算机最初是由美国人发明的 美国人为了能够让计算机识别英文字符,发明了一种字符编码
也即是最早的字符编码表,ASCII码
ASCII码:内部记录了英文字符与数字之间的对应关系,用一个字节来表示对应关系
'''
'''所有的英文字母和符号加起来不超过,127,而ASCII编码表内可以存放255个字符
目的是为了后续发现新的语言
'''
# ASCII码表中必须记住的对应关系
A-Z: 65-90
a-z;97-122
0-9:48-57
# 2.2.2 群雄割据
# 中国字符编码表:GBK:记录了中英文与数字的对应关系
# 对于英文还是使用一个字节
# 对应中文使用两个或者更多字节来表示(由于中国文化博大精深,存在很多生僻字)
# 日本字符编码表:shift_jis:记录了日文英文与数字的对应关系
# 韩国字符编码表:EUC_KR: 记录了韩文英文与数字的对应关系
# 2.2.3 天下一统
'''为了能够实现不同国家之间的文本数据能够彼此之间实现无障碍沟通交流需要对编码进行统一
因此出现了新的字符编码表unicode又叫万国码
unicode统一使用两个及以上字符记录字符与数字的关系,但是由于所有的字符都采用两个字符记录,在存储数据的时候,
不同的字符文件所占的空间都按照这个标准,存储空间就会出现不合理的情况
于是出现了utf8(优化后的万国码)
utf8规定:英文还是用一个字节存储,中文用三个或以多字节存储
现在默认使用的编码是utf8
'''
![image]()
2.3字符编码实操
# 2.3.1 如何解决文件乱码的情况
# 文件当初是以什么编码编的,打开的时候就用什么编码解
# 2.3.2 python解释器版本不同带来的编码差异
python2.x内部使用的编码默认是ASCII码
如何解决不同版本的python解释器都能正常运行
文件头部加上# coding:uft8(-*- coding:utf8-*-)告诉解释器当前编码是用utf8
在python2.x中定义字符串前面要加一个小u
eg: s =u'你'
python3.x内部使用utf8
'''
自定义文件模板内容
file
settings
Editor
file and code templates
python script
'''
# 2.3.3 编码与解码
# 编码
将人类能读懂的字符按照指定的编码转换成数字
# 解码
将数字按照指定的编码转换成人类能够读懂的字符
eg:s = '每天不要想太多 学就完事了 干就完了 奥利给!!!'
编码
res = s.encode('utf8')
print(res, type(res)) # bytes 在python中直接将该类型看成二进制数据即可
解码
res1 = res.decode('utf8')
print(res1)
3.文件操作
3.1 文件的定义
文件其实就是操作系统暴露给用户简便操作硬盘的快捷方式(接口)
3.2代码如何操作文件
# 关键字
open()
# 操作文件的三个步骤
1.利用关键字open打开文件
2.利用其它操作方法操作文件
3.关闭文件
'''
文件路径
相对路径与绝对路径
相对路径:open('a.txt') # 在当前文件夹下
绝对路径:open(r'D:\py20\day08\a.txt') # 不在当前文件夹下
路径中出现了字母与斜杠的组合产生了特殊含义如何取消
在路径字符串前面加一个r
r'D:\py20\day08\a.txt'
'''
'''
open()打开文件括号内参数解释
open(文件路径,操作文件的模式,字符编码类型)
文件路径和操作文件的模式是必须的,不写默认为r
字符编码不写默认为解释器默认编码
'''
# with语法,上下文管理(在操作完成以后自动关闭文件)
# 语法
with open() as f: # f = open()
print(f.read)
# 在操作文件时,推荐使用with,或者每次在对文件操作完成以后记得把文件关闭
# 文件关闭方法
close
3.3文件操作模式
'''
补全语法结构但是本身没有实际含义的有
pass、...
'''
# 3.3.1 只读模式(只能看不能写)
# 关键字 'r'
# 1. 路径不存在时,直接报错
with open(r'a.txt', 'r', encoding='UTF-8') as f:
pass
# 2. 路径存在时,会返回文件里的内容
with open(r'a.txt', 'r', encoding='UTF- 8') as f:
print(f.read()) # 读取文件内所有的内容
# 3.3.2 只写模式(只能写不能看)
# 关键字 w
# 1. 路径不存在时,自动创建新文件
with open(r'a.txt', 'w', encoding='UTF-8') as f:
pass # 创建一个新文件
# 2. 路径存在时:1.先清空文件呃逆荣 2.再执行写入操作(简单来捉就是会覆盖之前的内容)
# with open(r'a.txt', 'w', encoding='utf8') as f:
# # f.read()
# f.write('hello world!\n')
# f.write('hello world!\n')
# f.write('hello world!\n')
![image]()