python基础之四_文件读写、编码与解码

一 编码与解码:

https://www.cnblogs.com/51try-again/p/10205822.html

编码与解码的概念:
第10001次讲编码解码问题,编码解码讲的是二进制与字符之间的解析问题。文本从使用上来看有以下几种情景:存储、传输、展示。在文本存储、传输中都使用字节流的方式,也就是比特流(1byte=8bit嘛),这时候只是单纯01编码;而文本在显示时是以"文字"的方式展现。
存在一个问题:文字按什么规则转为二进制,二进制按什么规则转为文字?这就是编码与解码:文字str转为二进制bytes叫编码encode,二进制bytes转为文字str叫解码decode。

python中的编码与解码:
1.python默认的是utf-8编码方式,也就是说文字对照UTF-8编码表转为二进制比特流,存储在内存、硬盘,或通过网络传输。但是也可以自己指定编码方式进行存储,个人理解就是,先输入文字,此时python默认生成utf-8的二进制码存储在内存中,再指定unicode方式进行存储,此时python将utf-8的二进制码转为unicode下对应的二进制码。
2.python默认的是用utf-8解码方式,将从网络、内存、硬盘接收到的二进制比特流,对照UTF-8编码表转为文字str进行展示。但是也可以自己指定解码方式将二进制流转为文字。
3.从以上描述可知,若存储时人为指定编码方式,而读取时采用默认解码方式,会出现乱码现象:如指定以unicode方式对字符进行编码存储,存为硬盘中的文本(即以unicode对应得到比特流进行存储),打开时python默认utf-8对打开的二进制流进行解码,此时发生乱码了。
4.python中的自动编码解码是针对用户创建的str类型变量,对其存储和读取时的操作。如果用户创建的是bytes类型,python不会对其进行自动编码解码操作的,bytes本来就是二进制码,用户怎么创建python就怎么存储和读取。而用户将str变量转为bytes变量,必须指定编码格式。
5.python命令行中对比特流的展示并不是01串,而是以16进制的方式显示,如\xAC,其中\x为python中表示16进制的方式(和习惯中的0x方式不一样)

二 文件打开模式:

https://www.cnblogs.com/poloyy/p/12353716.html
https://www.runoob.com/python3/python3-file-methods.html

1.个人理解:基本打卡模式有三种:r、w、a;附加打卡模式有两种:b、+;独立打卡模式有两种:t、x。基本模式能够与附加模式组合。
2.文本文件直接使用r、w、a打开,python默认按UTF-8编码解析;图像、视频、音频文件以二进制模式打开,需要r、w、a加上附加模式b。
3.r有关的模式,若文件不存在则报错;w、a有关的模式,若文件不存在则创建
4.文件读取时是读取文件指针到文件末尾的内容,若用a+模式打开,读取的内容会为空,需要将指针以到文件开头

打开模式 作用
r 只读,指针位于文件开头。默认模式
w 只写,删除原有内容,指针位于文件开头
a 只追加写,不删除原有内容,指针位于文件末尾
b 二进制模式
+ 可读可写
t 文本模式
x 创建并写,若存在则报错
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值