快捷搜索:  汽车  科技

文本文件和二进制文件的读写(字符编码文件操作)

文本文件和二进制文件的读写(字符编码文件操作)"""之所以使用八位是为了后续发现新的语言用一个字节来是对应关系"""所有的英文字符和符号加起来其实不超过127

什么是字符编码?

由于计算机内部识别二进制,但是用户在使用计算机的时候却可以看见各式各样的语言字符

字符编码:内部记录了人类字符与数字对应关系的数据

字符编码发展史

计算式是美国人发明的,美国人为了能够让计算机识别英文字符

ASCII码:里面记录了英文字符与数字的对应关系

用一个字节来是对应关系

"""

所有的英文字符和符号加起来其实不超过127

之所以使用八位是为了后续发现新的语言

"""

必须记住的对应关系有以下两组

A-Z:65-90

a-z:97-122

中国人

为了能够让计算机识别中文 我们需要发明另外一套编码表

GBK码:记录了英文中文与数字的对应关系

对于英文还是使用一个字节

对应中文使用两个字节甚至更多字节

"""两个字节其实也不够表示出所有的中文

遇到生僻字可能需要更多位来表示

"""

日本人

为了能够让计算机识别日文 也需要发明一套编码表

shift_JIS码:记录了日文英文与数字的对应关系

韩国人

为了能够让计算机识别韩文 也需要发明一套编码表

Euc_kr码:记录了韩文英文与数字的对应关系

为了能够实现不同国家之间的文本数据能够彼此无障碍交流需要对编码统一

unicode(万国码)

统一使用两个及以上字符记录字符与数字的对应关系

utf8(万国码的优化版本)

将英文还是用一个字节存储

将中文使用三个字节或更多字节存储

'''现在默认使用的编码是utf8'''

文本文件和二进制文件的读写(字符编码文件操作)(1)

字符编码实操

如何解决乱码的问题

文件当初以什么编码编的,打开的时候就用什么编码解开

python解释器版本不同带来的编码差异

python2.X内部使用的编码默认是ASCII

文件头>>> coding:utf8

在python2中定义字符串前面要加一个小u s = u'我爱中国'

python3.X内部使用的编码是utf8

文本文件和二进制文件的读写(字符编码文件操作)(2)

编码与解码

编码:

将人类能够读懂的字符安装指定的编码转换成数字

解码:

将数字按照指定的编码转换成人类能够读懂的字符

列:

编码:

res = s.encode('utf8')

print(res type(res)

解码:

res1 = res.decode('utf8')

print(res1)

文本文件和二进制文件的读写(字符编码文件操作)(3)

文件操作

什么是文件?

文件就是操作系统暴露给用户操作硬盘的快捷方式(接口)

代码如何操作文件?

关键字 open()

三步走:

1、利用关键字打开文件

2、利用其它方法操作文件

3、关闭文件

"""

文件路径

相对路径与绝对路径

路径中出现了字母与斜杠的组合产生了特殊含义如何取消

在路径字符串前面加一个r

r'D:\py20\day08\a.txt'

"""

open ('b.txt') >>>打开文件

open(r'D:\py\old.txt') >>>绝对路径

res = open('a.txt' 'r' encoding='utf8')

print(res.read())

res.clsoe() >>>关闭文件释放资源

格式: open(文件路径 读写模式 字符编码)

文件路径与读写模式是必须的

字符编码是可选的(有些模式需要编码)

with上下文管理(自动close文件)

with open(r'a.txt' 'r' encoding='utf8') as f1: # f1=open() f1.close()

print(f1.read()) >>>读取文件内所有的内容

"""代码操作文件 推荐使用with语法"""

文本文件和二进制文件的读写(字符编码文件操作)(4)

件读写模式

r:只读模式(只能看不能改)

路径不存在的话,直接报错

with open(r'b.txt 'r' encoding='utf8') as f:

print(f.read()) >>>读取文件内所有的内容

w:只写模式(只能写不能看)

路径不存在的话,会自动创建

with open(r'b.txt' 'w' encoding='utf8') as f:

路径存在:1.会先清空文件内容 2.再执行写入操作

with open(r'a.txt' 'w' encoding='utf8') as f:

>>> f.read()

f.write('hello world!\n')

f.write('hello world!\n')

f.write('hello world!\n')

a 只追加模式(追加内容)

猜您喜欢: