day8字符串编码 文件处理

01字符编码

启动软件的流程

打开notepad++查看test.txt文档

1.从硬盘将软件程序加载到内存中

2.加载test.txt到内存中

3.执行notepad的代码,将test.txt的内容输出到屏幕上

 

python也是一个应用软件

1.从硬盘将解释器加载到内存中

2.加载test.py到内存中

3.解释器解析python语法

 

文本编辑器与解释器在打开同一个py文件时。前2个阶段是一致的,仅仅是第三阶段不同

 

什么是字符编码?

编码:按照某种规范,将数据转换为二进制

为什么要编码:

计算机只能识别0和1,人类要使用计算机则必须将所有的数据和命令都用二进制告诉计算机,这是一个复杂的过程,所以需要一种解决方案,可以让计算机识别人类的语言

 

字符编码的发展史

1.美国人发明了计算机,需要让计算机识别美国人的语言,所以诞生了asc编码表,

2.其他的国家也需要使用计算机,于是每个国家都推出了自己的编码表

中国-GBK

日本-shift-j

因为每个编码表互不兼容,导致乱码问题

3.为了统一全世界的编码,推出了unicode编码

(1)统一全世界的编码

(2)必须还兼容老式编码

 

目前:内存中用unicode 硬盘或者网络传输中用UTF-8

 

用户输入->内存(unicode)->转换为(utf-8)->硬盘 这个过程称为编码,就是字符转为二进制的过程

 

硬盘上的文件(utf-8的二进制)->内存中unicode的二进制->编码表得到符号->显示到屏幕中 该过程称之为解码  把二进制转为符号

 

乱码问题?,只要找到正确编码,数据可以恢复

乱码不仅仅是存和取的编码不用,还可能是存的时候就已经乱了(文档中的内容超出了采用的编码表范围),这将导致数据丢失

所以存的时候一定要注意:

所使用的编码方式一定要要支持文档中的所有内容,即utf-8

 

python在执行代码之前 必须从硬盘加载代码到内存,而硬盘中都是二进制数据,必须先解码为Unicode

 

解释器怎么知道你采用的解码方式?

如果不明确 解释器采用默认解码方式,在python3中默认utf-8 python2是asc

conding:utf-8 

u表示将这个变量储存为unicode编码,可以防止取出变量时乱码

 

02encode与decode

encode 编码 unicode->utf-8 将unicode字符转为制定的二进制

decode 解码 utf-8->unicode将二进制转为unicode

 

03文件处理

文件是什么?

文件是操作系统提供一套虚拟概念

文件这个概念之所以出现是为了简化对硬盘的操作

文件处理是为了将数据永久保存

 

打开文件的语法1

1.打开文件

f=open('路径(相对绝对路径)' encoding='utf-8') #是给系统发送了一个指令,让操作系统去打开文件,因为应用程序无法直接控制硬件

2.读取内容

print(f.read())

3.关闭文件 不要忘记

f.close()

 

#open close read 等都是在给操作系统发送指令

 

打开文件的语法2 在with代码执行完毕后 会自动调用close

wiht open(r'test,txt' ,mode='r',encoding='utf-8') as f:

    print(f.read)

 

在路径前面加一个r 取出特殊意思 r=raw

#参数一 文件路径 可以是相对 也可以是绝对

#mode 打开文件的模式 

r(只读)

w(只写)

+(可读可写) 了解即可

#encodoing 编码方式,window默认为GBK linux默认为UTF-8

 

(1)读取文件read

read()读取内容 括号内是读取的个数 默认为-1 表示全部读取

需要注意read(-1)仅限于文件较小时,如果文件太大会造成内存溢出

read(size)读取制定大小

readline()读取一行

readlinnes()一次性读取全部,会将每一行读入到列表中

readable() 是否可读

 

(2)写入文件write(文件不存在 会创立一个文件)

注意在w模式下 一旦打开文件 立即清空原来的内容

write写入内容,任何字符串

wirtelines写入内容 容器类型 可以前面加上上'\n'.join(列表),加入换行 字典得到key

默认情况下读写文本模式就是t模式,同样需要与r\w连用

 

(3)追加写入模式append

a表示追加写入,不会清空原数据,同时会把光标移动到最后

 

(4)可读可写+(可用于文本处理,但是对于别的文件,一般不用,很容易造成文件损坏)

w+立即清空原文件 如果不存在则创建新文件

r+如果不存在报错

a+如果不存在则创建,光标移动到最后

 

操作非文本文件

在操作非文本文件时,不要设置encoding

在操作非文本文件时,必须明确指定模式为字节模式 b用来指定为字节模式

b必须与r\w 连用 rb(readBytes)\wb(writeBytes)

 

注意:t模式下 python解释器会自动进行编码和解码 b模式不会

模式为字节模式时,单位为字节

在b模式下 只能写入字节

 

总结

控制文件的打开模式:

r\w\a\+

控制操作文件内容的 模式:

t\b

t\b必须与打开模式连用

各种组合如下:

rt、wt、at、rb、wb、ab、r+、w+、a+

关于文件操作的常用函数:

read

readline

readliens

write

writelines

writeable

 

关于编码的两个函数

encode编码

decode解码

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值