“老奶奶”的python学习笔记(15)
知识体系
第15关:编码和文件读写

知识点
编码
二进制
2的3次方可以表示0~7八种状态
2的8次方(256种)状态,由8个0或1组成
存储单位
最小单位:位,也叫比特(bit)
8个比特是1个“字节”(byte)
编码表
-计算机是有自己的工作区的,这个工作区被称为“内存”。数据在内存当中处理时,使用的格式是Unicode,统一标准。
-数据在硬盘上存储,或者是在网络上传输时,用的是UTF-8,因为节省空间。但你不必操心如何转换UTF-8和Unicode,当我们点击保存的时候,程序已经“默默地”帮我们做好了编码工作。
-一些中文的文件和中文网站,还在使用GBK,和GB2312。
-基于此,有时候面对不同编码的数据,我们要进行一些操作来实现转换。这里就涉及接下来要讲的【encode】(编码)和【decode】(解码)的用法。
【encode】(编码)
所谓的编码,其实本质就是把str(字符串)类型的数据,利用不同的编码表,转换成bytes(字节)类型的数据。
基本语法:
'你想编码的内容'.encode('你使用的编码表')
举例:
print('吴枫'.encode('utf-8'))
print('吴枫'.encode('gbk'))
【decode】(解码)
基本语法:
'你想解码的内容'.decode('你使用的编码表')
举例:
print(b'\xe5\x90\xb4\xe6\x9e\xab'.decode('utf-8'))
print(b'\xce\xe2\xb7\xe3'.decode('gbk'))
-将人类语言编码后得到的结果,有一个相同之处,就是最前面都有一个字母b,比如b'\xce\xe2\xb7\xe3',这代表它是bytes(字节)类型的数据。
-\x是分隔符,用来分隔一个字节和另一个字节。你经常会看到网址里面有好多的%,它们也是分隔符,替换了Python中的\x。
文件读写
是Python代码调用电脑文件的主要功能,能被用于读取和写入文本记录、音频片段、Excel文档、保存邮件以及任何保存在电脑上的东西。
作用:
假如有一项工作,需要把N个Word文档里的资料合并到1个文件上,这时需要用Python。或者,当你要从网上下载几千条数据时,直接用Python帮你把数据一次性存入文件也是相当方便。
读取文件
【第1步-开】使用open()函数打开文件
open()函数里面有三个参数:
第一个参数是文件的保存地址。文件的地址有两种:相对路径和绝对路径,拖到终端获取的地址是绝对路径。
-绝对路径就是最完整的路径,相对路径指的就是【相对于当前文件夹】的路径,也就是编写的这个py文件所放的文件夹路径!如果要打开的文件和open.py在同一个文件夹里,这时只要使用相对路径就行了,而要使用其他文件夹的文件则需使用绝对路径。
-这两种地址,Mac和Windows电脑不太一样:
Windows系统里,常用\来表示绝对路径,/来表示相对路径。因为在Python中是转义字符,所以时常会有冲突。为了避坑,Windows的绝对路径通常要稍作处理,写成以下两种格式:
一种是:将''替换成'\'。例如:open('C:\Users\Ted\Desktop\test\abc.txt')
另一种是:在路径前加上字母r。例如:open(r'C:\Users\Ted\Desktop\test\abc.txt')
Mac系统里,全部是/。
第二个参数表示打开文件时的模式。这里是字符串 'r',表示 read,表示我们以读的模式打开了这个文件。除了'r',其他还有'w'(写入),'a'(追加)等模式
第三个参数encoding='utf-8',表示的是返回的数据采用何种编码,一般采用utf-8或者gbk。注意这里是写encoding而不是encode
【第2步-读】用read()函数进行读取的操作
写法是:filecontent = file1.read()
【第3步-关闭】使用的是close()函数
使用方法:
file1.close()
关闭的原因:
-1.计算机能够打开的文件数量是有限制的,open()过多而不close()的话,就不能再打开文件了。
-2.能保证写入的内容已经在文件里被保存好了。
写入文件
【第1步-开】以写入的模式打开文件
open() 中还是三个参数,其他都一样,除了要把第二个参数改成'w',表示write,即以写入的模式打开文件
使用方法举例:
file1 = open('/Users/Ted/Desktop/test/abc.txt','w',encoding='utf-8')
【第2步-写】往文件中写入内容,使用write()函数。
举例:
file1.write('张无忌\n')
需要注意:
'w'写入模式会给你暴力清空掉文件,然后再给你写入。如果你只想增加东西,而不想完全覆盖掉原文件的话,就要使用'a'模式,表示append,你学过,它是追加的意思。
-1.write()函数写入文本文件的也是字符串类型。
-2.在'w'和'a'模式下,如果你打开的文件不存在,那么open()函数会自动帮你创建一个
【第3步-关闭】使用close()函数