字符编码和文件的基本操作
- 1 > 实际应用字符编码
-
- 1.1 > 编码和解码意义
- 1.2 > 编码(encode)
- 1.3 > 解码(decode)
- 1.4 > 如何解决乱码问题
- 1.5 > python解释器层面
- 1.5.1 > python2解释器:
-
- 1.5.1 - 1> 文件头
- 1.5.1 - 2> 字符前缀
- 1.5.2 > python3解释器:
- 2 > 文件操作简介
-
- 2.1 > 文件的含义
- 2.2 > 打开文件的语法结构
- 2.3 > 用关键字打开文件
- 3 > 读写文件的模式
-
- 3.1 > r 模式
- 3.2 > w 模式
- 3.3 > a 模式
- 4 > 文件的操作模式
-
- 4.1 > t 模式
- 4.2 > b 模式
- 5 > 内置文件的方法
1 > 实际应用字符编码
1.1 > 编码和解码意义
??编码是指将人类能读懂的字符编码变成计算机能读懂的字符 ??解码是指将计算机能直接读懂的字符编码解码成人能读懂的字符。
1.2 > 编码(encode)
# 定义字符串的变量 s1 = '事已至此 何不一搏' # 编码变量 print(s1.encode('gbk')) # encode() 这个括号填充了你想把字符串编成什么样的字符编码。 # 打印 b'\xca\xc2\xd2\xd1\xd6\xc1\xb4\xcb \xba\xce\xb2\xbb\xd2\xbb\xb2\xab' ''' 如果在字符串的前面添加字母b,表示的就是数据类型为bytes类型 bytes类型是指2进制。 '''
1.3 > 解码(decode)
# 定义编码字符串 res = b'\xca\xc2\xd2\xd1\xd6\xc1\xb4\xcb \xba\xce\xb2\xbb\xd2\xbb\xb2\xab' # 编码的数据解码将进行 print(res.decode('gbk')) # decode() 这个括号填写了您想要解码的字符串。 # 打印 事已至此 何不一搏
1.4 > 如何解决乱码问题
??当我们打开软件时,可能是它解码不同于编码类型的原因,所以当我们想以当我们想避免无序代码时,我们需要避免数据代码和解码相同的代码类型。
res1 = s1.encode('gbk') print(res1) # 将字符串按gbk类型编码 res2 = res1.decode('euc_kr') print(res2) # 解码用euc_kr类型,会产生乱码 res3 = res1.decode('gbk') print(res3) # 当我们用gbk他会正常显示类型解码。
1.5 > python解释器层面
1.5.1 > python2解释器:
??在python它在解释器中的默认编码是ASCII因此,我们需要使用两种关键方法来正常输出字符串
1.5.1 - 1> 文件头
??文件头必须写在文件的顶部,它的功能是告诉解释器使用哪种字符代码。格式如下:
1.coding:utf8 2.-*- coding:utf8 -*- # 这是一种美化的写法
1.5.1 - 2> 字符前缀
字符前缀的使用情况是,在使用pyhon2解释器的环境下定义字符串的时候,我们习惯会在前面加上一个 字符u。格式如下:
name = u'你好啊'
1.5.2 > python3解释器方面:
python3解释器在python2解释器的基础上进行了优化,他的默认字符编码就是目前常用的 utf - 8.
2 > 文件操作简介
2.1 > 文件的含义
文件的含义就是操作系统暴露给用户可以直接操作硬盘的快捷方式。
2.2 > 打开文件的语法结构
# 结构一:(不推荐使用)
f = open() # 打开一个文件就必须要使用close将其关闭
f.close()
# 结构二:(推荐使用)
with open() as f:
pass # 这中结构在使用时不需要考虑关闭文件,因为它会自动在使用完文件后关闭文件。
2.3 > 使用关键字打开文件
# 我们在打开文件时需要写上文件的路径,例如:
open(r'a.txt') # 这是相对路径
open(r'D:\xx\xx\a.txt') # 这是绝对路径
# 我们会在写路径的时候为了防止特殊符号产生意义,一般就是直接加r
# 使用open关键字打开文件时我们要注意一些几种情况
''' open(文件的路径,文件的操作模式,文件的编码) 1.文件的路径是必要的写上的 2.文件的操作模式和文件编码,可写可不写 '''
# 读取文件内容 read()
print(res.read()) # 读取文件内容
res.close() # 关闭文件
3 > 文件的读写模式
3.1 > r 模式
r 模式是一种只读模式,所以它只能读不行进行编写。当文件路径不存在时,它会直接报错。当文件路径存在时,它会正常打开文件并等待内容读取,将文件中的内容一次性读取。
with open(r'a.txt', 'r', encoding='utf8') as f:
pass # pass 在这里的作用就是用来补全语法,本身没有任何的功能
''' 当文件存在,一次型读取文件内容 当文件不存在 , 报错 文件只读不能写 输入f.write() 报错 '''
3.2 > w 模式
w 模式是一种只写模式,所以它只能写不行进行读取。当文件路径不存在时,它会直接新建一个文件。当文件路径存在时,它会将文件中的内容先清空, 之后再写入数据。
with open(r'b.txt', 'w', encoding='utf8') as f:
f.write('xxxxxxxxxx\n') # 写入文件内容
f.write('$$$$$$$$$$\r')
''' 假如b.txt不存在新建 b.txt 文件 假如b.txt文件中有内容,就会将文件中的内容全部情况再写上想要写入的内容 \n 表示换行符 \r 表示换行符 如果打印读取文件当中内容 print(f.read()) # 报错 '''
3.3 > a 模式
a 模式是一种追加写的一种模式,它也是只能写不行进行读取。当文件路径不存在时,它会直接新建一个文件。当文件路径存在时,它不会将文件中的内容先清空,而是在文件内容的末尾等待添加新的内容。
with open(r'b.txt', 'w', encoding='utf8') as f:
pass
''' 假如b.txt不存在新建 b.txt 文件 假如b.txt文件中有内容,就会直接在文件结尾添加新内容 f.write('xxxxxx') # 结尾添加内容 print(f1.read()) # 报错 '''
4 > 文件的操作模式
4.1 > t 模式
t 模式是一种默认的模式,是用于操作文本文件的。该模式,并且需要。这种模式的读写都是进行的。
4.2 > b 模式
b模式是一种的二进制模式。可以,所以。它是。并且这种模式的读写都是以bytes类型为最小的单位。
5 > 文件内置方法
read() # 一次性读取文件内容
''' 1.执行完之后光标在文件末尾 继续读取没有内容 2.当文件内容特别大的时候 容易造成内存溢出(满了) '''
readline() # 一次只读一行内容
readlines() # 结果是一个列表 里面的各个元素是文件的一行行内容
readable() # 判断当前文件是否可读
支持for循环 # 一行行读取文件内容(推荐使用) 内存中同一时刻只会有一行内容
write() # 写入文件内容(字符串或者bytes类型)
writelines() # 可以将列表中多个元素写入文件
writable() # 判断文件是否可写
flush() # 相当于主动按了ctrl+s(保存)