字符编码,及文件操作

程序运行与文件操作详解
本文深入解析了程序运行的硬件基础,包括CPU、内存和硬盘的作用,以及Python解释器如何执行.py文件。同时,详细介绍了字符编码的概念,如ASCII、GBK、Unicode和UTF-8的原理与应用。此外,文章还涵盖了Python中文件操作的基本知识,包括不同模式下的读写操作及编码设置。

1 运行程序的三个核心硬件

CPU

内存

硬盘

 

2 Python解释器运行一个py文件的步骤

1 将Python解释器的代码从硬盘读到内存中去

2 将py文件从硬盘读到内存去

3 Python读取文件内容,识别Python语法,执行相应操作

注意;普通的文本编辑器与Python解释器的前两部是一样的

3 字符编码

字符编码是针对文字,字符编码只跟文本有关

文本编辑器的输入和输出是两个过程

人在操作计算机输入的是人能看的懂得字符

但计算机只能识别010101这样的二进制数据

所以就会出现字符编码表(字符编码表就是字符与数字的对应关系)

 

1 ACSLL码表

用八位二进制表示一个字符

所有的英文字符+符号最多也就在125位左右

2 GBK

用2个bytes来表示一个中文字符,还用一个bytes表示一个英文字符

 

基于上面的推导

任何一个国家想要让计算机支持知己国家的语言,就必须创建一个自己的字符与数字的对应关系

3 万国码

应为,每个国家都有了自己的字符与数字对应关系的表,但只能自己国家的用,并不能与其他国家交流,所以就出现了万过吗

unicode

统一用2个bytes来表示一个字符

不足之处

1浪费空间

2io 次数增加,程序运行效率减低

 

 

当内存中的UIcode的数据存入硬盘中会按照"utf-8"编码

会将unicode的英文字符由原来的2个btes变为1个bytes

会将unicode的中文字符由原来的2个bytes变为3个bytes

 

utf-8在整体上优化了ubicode

现在的计算机内存都是unicde,硬盘都是utf-8

unicode的两个特点:

1用户输入的时候,无论输什么字符的时候unicode都与其他各国的编码都有对应关系

2其他各国编码的数据由硬盘读到内存中的时候unicode与其他各国的编码都有对应关系

 

数据由内存保存到硬盘

1内存中的unicode格式的二进制数据   》》》》编码(encode)》》》》utf-8格式的二进制数据

2硬盘中的utf-8的二进制数据》》》解码(decode)>>>>Unicode的二进制数据

 

 

保证乱码在于

文本医生么编码,就以什么解码

 

 

Python2 

py 文件默认使用ASCLL码(应为在开发Python2,nnicode还没有盛行)

Python3

py文件读入解释器默认以utf-8

 

文件头

#coding:utf-8

应为所有编码都支持英文所以文件头才能生晓

基于Python解释器开发的软件,只要是中文,前面都要加一个u

为了就是Python2 你不指定文件头时候默认用ASCII存储书籍

如果指定文件头那么就会按照文件头的编码格式存储数据

 

Python3 中字符串默认就是unicode编码格式的二进制数据

 

注意。pycharm终端就是用的utf-8

Windows终端用的是GBK

 

2 文件操作

 

什么是文件

文件就是操作系统给用户提供了有个操作硬盘的简易的接口

为什么要操作文件

我们需要操作硬盘存储文件

通过python来操作文件

f = open("text.text",mode="r",encoding="utf-8")
f.read()
f.close
print(f)

 

文件的打开模式

r 只读模式

w 只写模式

a 追加模式

操作文件单位的方式

t 文本模式

b 二进制模式(图片,视屏文件)

注意;mode参数,可以默认不写。不写就默认代表rt   只读的文本文件的t可以默认不写,不写就默认为t

 

w模式(一定要慎用)

注意w模式;文件不存在的情况下自动创立文件,当文件存在的情况下会将文件内容清空,在存入

with open("text.tet",mode="w",encoding="utf-8") as f:
f.write()


#只写模式的方法
#write() 向文件写入内容。写一行
#writelines()x向文件写内容,可以多写先要创建一个列表等价于for循环一个一个的往里面添加

  

 

r 模式(读完内容,会继续向下读,读的是空)

with open("text.tet",mode="r",encoding="utf-8") as f:
f.write()


#只读模式的方法
#read() 读取文件所有内容
#readline() 一行一行的读,等价于for循环,可以解决一次性读完内存过高的问题
#readable() 是否可读
#weitable() 是否可写

  

a模式

with open("text.tet",mode="a",encoding="utf-8") as f:
f.write()


#只写模式的方法
#write() 向文件写入内容。写一行在尾部追加内容

  

 

转载于:https://www.cnblogs.com/cherish937426/p/11143157.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值