博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day10
阅读量:5149 次
发布时间:2019-06-13

本文共 1626 字,大约阅读时间需要 5 分钟。

字符编码

一、计算机基础

  1. cpu:控制程序的运行(从内存中取出文本编辑器的数据读入内存)
  2. 内存:运行程序(经cpu操作后,内存中含有文本编辑器的数据)
  3. 硬盘:存储数据(文本编辑器)

二、文本编辑器存取文件的原理

  1. 打开编辑器就是启动了一个进程,是在内存中的,所有,用编辑器编写的内容也都是存放于内存中的,断电后数据消失。
  2. 要想永久保存,需要点击保存按钮,编辑器把内存的数据刷到了硬盘上。
  3. 我们编写一个py文件(没有执行),跟编写其他文件没有任何区别,都只是在编写一堆字符而已。

三、Python解释器执行py文件的原理

  • 第一阶段:Python解释器启动,此时就相当于启动了一个文本编辑器
  • 第二阶段:Python解释器相当于文本编辑器,去打开test.py文件,从硬盘上将test.py的文件内容读入到内存中(小复习:Python的解释性,决定了解释器只关心文件内容,不关心文件后缀名)
  • 第三阶段: Python解释器解释执行刚刚加载到内存中test.py的代码( ps:在该阶段,即真正执行代码时,才会识别Python的语法,执行文件内代码,当执行到name="egon"时,会开辟内存空间存放字符串"egon")

四、Python解释器与文本编辑器的异同

  • 相同点:Python解释器是解释执行文件内容的,因而Python解释器具备读py文件的功能,这一点与文本编辑器一样。
  • 不同点:文本编辑器将文件内容读入内存后,是为了显示或者编辑,根本不会理会Python的语法,而Python解释器将文件内容读入内存,是为了执行Python代码、会识别Python的语法。

五、字符编码

1、字符编码

字符编码:二进制和我们所认识的字符之间的相互转换的一个过程。

最早的字符编码为ASCII,只规定了英文字母数字和一些特殊字符与数字的对应关系。

之后中国人规定了自己的标准gb2312编码,日本人规定了Shift_JIS编码,韩国人规定了Euc-kr编码。

2、什么情况会出现乱码

当编码格式不统一的时候就会出现乱码。

文本编辑器支持的是utf8,你输入的是gbk --> 文件的存储

文件存储用了utf8,但是下次打开用了gbk --> 文件的读取

3、乱码的两种情况

中文的文本编辑器只认识中文,然后你输入了日文 --> 乱码 # encode编码

文本编辑器存储了中文(文件),但是你用日本的编辑器打开这个文件 --> 乱码 # decode 解码

4、解决乱码

什么格式存储,就什么格式读取,就不会乱码

文件的三种打开模式

# 'r'模式:只读模式f = open('test.py', 'r', encoding='utf-8')print(f.read())  # 读取文件所有内容print(f.readable())  # 文件是否可读print(f.readline())  # 一行一行读取文件print(f.readlines())  # 读取文件所有内容保存为列表f.close# 'w'模式:只写模式f = open('test.py', 'w', encoding='utf-8')s = 'asdaczca'f.write(res)  # 清空后再写print(f.writeable())  # 文件是否可写f.writelines(['aasda', 'adsda']) f.close()# ’a'模式:追加模式f = open('test.py','a', encoding='utf8')f.write('nick handsome')  # 文件末追加f.close()# with管理上下文with open('test.py', 'r', encoding='utf-8') as f:    print(f.read)

转载于:https://www.cnblogs.com/17vv/p/11316141.html

你可能感兴趣的文章
SDN第四次作业
查看>>
idea连接服务器上传jar并运行
查看>>
oracle高级分组
查看>>
django--->form表单
查看>>
获取网页源代码
查看>>
一个简单的演示用的Linux字符设备驱动程序
查看>>
spi和I2c的速率
查看>>
Android 开源框架ActionBarSherlock 和 ViewPager 仿网易新闻客户端
查看>>
新技能 get —— Python 断点续传下载文件
查看>>
电商秒杀系统
查看>>
C语言基础知识点
查看>>
关于“Error: listen EADDRINUSE: address already in use 127.0.0.1:3000”
查看>>
ubuntu安装mysql,redis,python-mysqldb
查看>>
PAT:1002. 写出这个数 (20) AC
查看>>
BufferedReader
查看>>
读文件Io异常的处理
查看>>
在datatable中循环删除多条
查看>>
UML类图几种”关系“的总结
查看>>
保险数据分析
查看>>
代码块与静态代码块与静态方法的加载顺序
查看>>