day9字符编码回顾 文件处理回顾 以及文件处理其他操作

上节回顾

01什么是字符编码

人类的语言---翻译---二进制

翻译的过程就称之为字符编码

 

保存不上目的 能取出来才是目的

二进制---翻译---人类的语言

这个过程称之为解码

 

要想保存翻译的结果则保证采用相同的规范也就是字符编码

 

字符编码发展历史:

ascll 一个字符占一个字节

GBK中文使用两个字节 英文使用一个字节

unicode支持任何国家的语言,使用两个字节存储所有符号(速度比较高,但是占用空间)

utf-8可将其看作是unicode的升级版,一个英文占一个字节一个中文占三个字节

 

UTF-8使用场景:

1.当我们需要将数据基于网络进行发送时,必须将数据转成二进制  GBK,UTF-8都可以,但是由于UTF-8兼容万国并且节省空间

2.当你需要将数据从内存写到硬盘,也推荐使用UTF-8

 

乱码的发生的两种情况:

1.存的时候使用的编码与取的时候不用

2.存的时候,出现了编码表中不存在的字符,例如既有英文又有中文,但是采取了asc来编码

 

如何保证不乱码:******

1、存取一致

2、使用兼容万国的编码表

 

python解释器在读取py文件需要识别语法,当在定义字符串变量时又设计到编码问题

py中默认采用asc也可以使用conding来指定,也有乱码的可能

py3中默认就是unicode 并且coding只能修改前两阶段的解码过程,无法修改编译变量的编码

 

******

encode 将unicode---翻译---某种指定格式的二进制如utf-8

decode某种指定格式的二进制如utf-8---翻译---unicode

 

encode的使用场景******

1.需要文本写入到硬盘时

2.需要将文本基于网络发送时

 

(存的时候用utf-8 用的使用转换为unicode)

 

02文件处理

文件是操作系统提供一套虚拟接口,用于简化对于硬盘的操作,一个文件就代表硬盘上的一段二进制数据

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

 

基本路径

1.打开文件语法1

f=open(r'文件路径',mode='rt',encoding='utf-8')

    f.read()    

    #f.write()

    f.close()

2.语法2(上下文管理)

with open(r'文件路径',mode='rt',encoding='utf-8') as f:

    pass

 

打开文件的模式

默认为t模式 即文本操作模式

r  == rt  只读文本

w ==wt 只写文本

a  ==at  追加写文本

无论是读还是写 都需要制定编码方式 如果不制定 windows默认为GBK linux默认为UTF-8

操作数据都是字符为单位

 

t模式(文本模式)

a和w 都是写入模式 如果说文件不存在,w和a都会创建新文件,不同的是w会清空源文件,a不会清空且会将光标移动到文件的末尾

b模式(非文本模式)

与文本相同在于都必须与r,w,a连用

rb  只读字节模式

wb 只写字节模式

ab  追加只写字节模式

b模式可以操作任意类型的文件,不需要设置编码encoding***

读写数据都以字节为单位

 

+可读可写模式

r+  ==r+t(光标在前面会覆盖前面的字符)

w+ ==w+t(打开就清空 所以读不到)

a+  ==a+t(移动指针到最后了 read不到东西)

 

+可读可写字节模式

r+b  (光标在前面会覆盖前面的字符)

w+b (打开就清空 所以读不到)

a+b  (移动指针到最后了 read不到东西)

 

每一个都有问题 所以可读可写并不常用

 

今日内容

01复制文件copy_Tool

从源文件读取,写入到新文件中

with的嵌套时 注意:不要对同一个文件进行操作

import sys #有一个文件sys import是导入这个文件

print(sys.argv) 得到的就是执行解释器传入的参数,第一个参数默认就是当前执行文件

 

02文件对象其他操作

f.name 获取文件路径

操作系统会在文件关闭时一次性写入,但操作系统的缓存满了也会写入(减少io操作,提高操作)

f.flush  立即将数据写入硬盘(可以保证数据不丢失,但效率降低)

f.closed 文件是否被关闭

f.encoding获取文件的编码

f.buffer获取缓冲区 忘记它吧

 

03修改文件的两种方式

文件修改的思路1

1.读取文件数据到内存 

2.进行修改

3.将修改后的数据写会文件中

文件修改的思路2

读取一行 修改一行 修改完立马写入硬盘,避免了内存溢出的问题

import os 调用操作系统

os.remove  #删除源文件

os.rename #将交换文件重命名为源文件

 

具体使用哪种方式 看文件的大小

较小的文件推荐一次性读到内存修改 减少oi\操作

较大的文件必须使用第二种操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值