“本文阅读时间大概为5分钟”
Hello,小数先生粗线啦~~~今天教大家设计文档搜索器
先看下搜索器效果(文中最后有源代码)
上传视频封面
好的标题可以获得更多的推荐及关注者
编码
编码的本质就是让只认识0和1的计算机,能够理解人类使用的语言符号,并将数据转换为二进制进行存储和传输
二进制
二进制的运算规律是逢二进一
二进制 —— 十进制
00 —— 0
01 —— 1
10 —— 2
11 —— 3
当有两个二进制位可以表示十进制的0,1,2,3四种状态(2的2次方)
用来存放一位0或1,就是计算机里最小的存储单位,叫【位】,也叫【比特】(bit)
8个比特构成一个【字节】(byte)
注:1 byte = 8 bit
注:运营商的宽带是以比特每秒位的,所以100M就相当于100Mbit/s
编码表
编码表的前世今生:
美国最先出台了ASCII编码,统一规定了常用符号用哪些二进制表示。每个国家都有自己的一套编码标准,中国科学家为了迎合汉字,出台了GB2312编码,为了显示更多中文,又出台了GBK标准。
为了沟通便利,Unicode(万国码)应运而生,将世界上所有的符号都纳入其中,这样所有的语言都要占用两个字节。缺点也暴露了出来,原本储存A,使用00010001就可以,现在要使用两个字节:00000000 00010001,对计算机存储是种极大的浪费。
科学家又提出了天才的想法:UTF-8(8-bit Unicode Transformation Format)。Unicode是内存编码的规范,而UTF-8是如何保存和传输Unicode的手段。
文件读写
是Python代码调用电脑文件的主要功能,能被用于读取和写入文本记录、音频片段、Excel文档、保存邮件以及任何保存在电脑上的东西
读取文件
总共就三步
测试前准备:
1.小数先生提前在桌面创建了一个test文件夹,文件夹里新建一个名为a.txt
2.在a.txt添加内容
【第一步:开】使用open()函数打开文件
file = open(r'c:\Users\MACHENIKE\Desktop\test\a.txt','r',encoding='gbk'
注:file这个变量是存放读取的文件数据的
open()函数里面三个参数:
1.第一个参数【c:\Users\...\a.txt】是文件的保存地址(小数先生和你的文件地址可能会不一样)
查看保存地址的方法:
通过VS Code查看
也有其他方法可以查看,小伙伴们可以通过自己方式来找到答案
因为'\'在Python中是转义字符,为了避免冲突,Windows的绝对路径通常在路径前面加个r防止转义
open(r'c:\Users\MACHENIKE\Desktop\test\a.txt','r',encoding='gbk')
# 等同于
open('c:\\Users\\MACHENIKE\\Desktop\\test\\a.txt','r',encoding='gbk')
2.第二个参数【r】表示打开文件时的模式
字符串'r'表示read,表示以读的模式打开这个文件
3.第三个参数【encoding='gbk'】,表示的是返回的数据采用何种编码,一般采用uft-8或者gbk
【第二步:读】
file = open(r'c:\Users\MACHENIKE\Desktop\test\a.txt','r',encoding='gbk')
filecontent = file.read()
print(filecontent)
输出
数仁信息
小数先生
注:如果运行时报错UnicodeDecodeError,把encoding='gbk'改成encoding='utf-8'
【第三步:关】关闭文件,使用close()函数
file = open(r'c:\Users\MACHENIKE\Desktop\test\a.txt','r',encoding='gbk')
filecontent = file.read()
print(filecontent)
file.close()
关闭文件的目的:
①计算机打开的文件数量有限,open过多而不close,就不能再打开文件了
②保证写入的内容已经在文件里保存
写入文件
和读取文件一样,也是三步
【第一步:读】以写入的模式打开文件
file = open(r'c:\Users\MACHENIKE\Desktop\test\a.txt','w',encoding='gbk')
注:第二个参数改成了'w',表示write。以写入的模式打开文件
【第二步:写】往文件中写入内容,使用write()函数
file = open(r'c:\Users\MACHENIKE\Desktop\test\a.txt','w',encoding='gbk')
file.write('早上好\n') # \n表示另起一行
file.write('小数先生粗线啦~~~~\n')
注:如果不想完全覆盖原文件,只想增加东西,可以使用'a'模式,表示append
【第三步:关】使用close()函数
file = open(r'c:\Users\MACHENIKE\Desktop\test\a.txt','w',encoding='gbk')
file.write('早上好\n') # \n表示另起一行
file.write('小数先生粗线啦~~~~\n')
file.close()
注:只是运行了代码,终端没有内容输出
我们查看下a.txt文件,里面内容已经被更改了
open()函数第二个参数总结图
知识拓展
1.readlines()函数,按行读取
file = open(r'c:\Users\MACHENIKE\Desktop\test\a.txt','r',encoding='gbk')
filecontent = file.readlines()
print(filecontent)
file.close()
输出
['早上好\n', '小数先生粗线啦~~~~\n']
我们可以通过遍历把每一行的数据打印
file = open(r'c:\Users\MACHENIKE\Desktop\test\a.txt','r',encoding='gbk')
file_lines = file.readlines()
for i in file_lines:
print(i)
file.close()
输出
早上好
小数先生粗线啦~~~~
2.writelines()函数,参数可以是序列(列表,元组)。write()函数,参数只能是字符串
input_b = ['工资','100','奖金','100']
file = open(r'c:\Users\MACHENIKE\Desktop\test\b.txt','w',encoding='gbk')
file.writelines(input_b)
file.close()
注:这次打开是b.txt的文件,如果电脑不存在b.txt,这行代码会自动创建一个b.txt
桌面test文件里会多出一个b.txt文件
b.txt里面的内容
文档搜索引擎源代码
# 根据输入的关键词查询文档内匹配字段
file_adress = input('输入查询文档绝对路径:')
file = open(r'{}'.format(file_adress),'r',encoding='gbk')
print('-'*30+'文档搜索引擎'+'-'*30+'\n')
file_lines = file.readlines()
while True:
employee_name = input('输入员工姓名,即可查询工资:') # 查询关键词
for file_line in file_lines:
if employee_name in file_line:
print(file_line)
p_choice = input('【1】继续查询 【2】退出:')
print(' ')
if p_choice == '2':
break
print('-'*30+' 搜 索 结 束 '+'-'*30)
file.close()