字符编码
文件处理
字符编码
任何一个程序想要运行,必先要将程序从硬盘加载到内存中,然后CPU去内存里将指令取出执行,正在运行的应用程序产生的数据,必要先存在内存里
字符编码只和文本文件有关,字符编码和视频、音频文件无关
文本编辑器的输入和输出是两个过程
输入的字符>>>>> (字符编码表)>>>>>二进制数字
ASCII码表
用八位二进制表是一个英文字符
0000 0000
1111 1111
GBK
用2Bytes表示一个中文字符 依旧用1Bytes表示一个英文字符
0000 0000 0000 0000
1111 1111 1111 1111
万国码Unicode
统一用2Bytes表示所有字符
缺点:1.浪费存储空间
2.I/O次数增减,程序运行效率降低(致命)
当内存中的Unicode编码格式数据存到硬盘的时候,会按照utf-8编码
会将Unicode的英文字符由原来的2Bytes变成1Bytes
会将Unicode的中文字符由原来的2Bytes变成3bytes
现在的计算机基本上内存是Unicode,硬盘是utf-8
(需要掌握的)
Unicode的两个特点
1.用户在输入时,无论什么字符都能兼容万国字符
2.其他国家编码的数据又硬盘读到内存的时候Unicode与其他各个国家的编码都有对应关系
(必须掌握的)
数据由内存保存到硬盘
1.内存中的Unicode格式二进制数>>>>>编码(encode)>>>>>utf-8格式的二进制数据
硬盘中的数据由硬盘读到内存
1.硬盘中的utf-8格式的二进制数据>>>>>解码(decode)>>>>>内存中的Unicode格式的二进制数据
(******)
人生真理:文本文件用什么编的就用什么解码
Python2中py文件的读入解释器默认用ASCII码(因为当时Unicode还没有流行)
Python3中py文件的读入解释器默认用utf-8
文件头
# coding:utf-8
1.因为所有的编码都支持英文字符,所以文件头名才能够正常生效
Python解释器开发软件,只要是中文,前面都需要加一个u,为的就是你不指定文件头时,能识别中文
Python3中字符串默认就是Unicode编码格式的二进制数
补充:
1.pycharm终端用的是utf-8格式
2.windows终端采用的是gbk
八位二进制也叫8bit(******)
8bit = 1Bytes
1024Bytes = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
1024TB = 1PB
文件处理
什么是文件?
操作系统提供给用户操作复杂硬件(硬盘)的简易的接口
使用方法:f = open() f.read() f.close()
# 通过python代码操作文件 # r取消转义 # f = open(r'D:Python项目day07a.txt',encoding='utf-8') # 向操作系统发送请求 打开某个文件 # # 应用程序要想操作计算机硬件 必须通过操作系统来简介的操作 # print(f) # f是文件对象 # print(f.read()) # windows操作系统默认的编码是gbk # f.read() # 向操作系统发请求 读取文件内容 # f.close() # 告诉操作系统 关闭打开的文件 # print(f) # print(f.read()) # 文件上下文操作 with open(r'D:Python项目day07a.txt',encoding='utf-8') as f , open(r'D:Python项目day07.txt',encoding='utf-8') as f1: # f仅仅是一个变量名 你把它看成是一个遥控器 print(f) print(f.read()) print(f1) print(f1.read())