电脑自带的搜索文件功能相信大家都体验过,那是真的慢,等它找到文件,我都打完一把游戏了!

那必须不能忍,于是我自己做了一个文件搜索工具,犄角旮旯的文件都能一秒钟搜索出来的那种!

保证能把你们男(女)朋友那些藏的很深的不可告人的文件分分钟找出来~



用到的环境

1. 解释器: Python 3.8.8 | Anaconda, Inc.

2. 编辑器: pycharm 专业版

代码展示

全部代码我都放这了,就不单独解释了,我都写在注释了。

import tkinter as tk
from tkinter import filedialog
import os root = tk.Tk()
root.geometry('600x300')
root.title('学习资料搜索工具') """搜索框"""
search_frame = tk.Frame(root)
search_frame.pack() tk.Label(search_frame, text='关键字:').pack(side=tk.LEFT, padx=10, pady=10)
key_entry = tk.Entry(search_frame) # 创建一个输入框
key_entry.pack(side=tk.LEFT, padx=10, pady=10) # 将输入框显示到界面
tk.Label(search_frame, text='文件类型:').pack(side=tk.LEFT, padx=10, pady=10)
type_entry = tk.Entry(search_frame)
type_entry.pack(side=tk.LEFT, padx=10, pady=10)
button = tk.Button(search_frame, text='搜索')
button.pack(side=tk.LEFT, padx=10, pady=10)
list_box = tk.Listbox(root)
list_box.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) """2. 点击按钮搜索文件""" def search():
print('按钮被点击了')
# 1. 获取关键字、文件类型
key = key_entry.get()
file_type = type_entry.get()
print(key, file_type)
# 2. 读取 windows 系统的文件
dir_path = filedialog.askdirectory()
print(dir_path) # 遍历文件,实现搜索功能
file_list = os.walk(dir_path)
for root_path, dirs, files in file_list:
# 目录路径,目录下的子目录,目录下的文件
# print(root_path, dirs, files)
for file in files:
# 过滤文件类型,搜索关键字
if type_entry: # py 如果输入了类型,就进行过滤,如果没有输入,就不过滤类型
if file.endswith(file_type):
# 搜索关键字
content = open(root_path + '/' + file, mode='r', encoding='utf-8-sig').read()
if key in content:
print(root_path + '/' + file)
# 把结果显示到界面上
list_box.insert(tk.END, root_path + '/' + file)
# 3. 实现搜索功能
# 4. 将搜索到的结果显示到界面 # 创建滚动窗口并布局到页面上
sb = tk.Scrollbar(root)
sb.pack(side=tk.RIGHT, fill=tk.Y)
sb.config(command=list_box.yview)
list_box.config(yscrollcommand=sb.set) button.config(command=search) def list_click(event):
print('列表框组件的内容被点击了')
# 1. 获取到选中的内容
index = list_box.curselection()[0]
path = list_box.get(index)
print(path)
# 2. 读取选中路径的内容
content = open(path, mode='r', encoding='utf-8').read()
print(content)
# 3. 将内容显示到新的窗口
top = tk.Toplevel(root)
filename = path.split('/')[-1]
top.title(filename)
text = tk.Text(top)
text.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
text.insert(tk.END, content) # 绑定点击事件
list_box.bind('<Double-Button-1>', list_click) root.mainloop()

这个算是比较简单的了,大家可以自行尝试一下,有什么不同的思路都欢迎在评论区发表交流。

如果看不懂的话也有相对应的视频教程

如果觉得对你有帮助,记得点赞三连支持一下哈~

最新文章

  1. Java基础加强之多线程篇(线程创建与终止、互斥、通信、本地变量)
  2. ajax data数据里面传一个json到后台的写法
  3. 【freemaker】之自定义指令&lt;#macro&gt;
  4. 【pyQuery分析实例】分析体育网冠军联盟比赛成绩
  5. Env:zsh和fish安装和使用
  6. jquery 分页控件(二)
  7. HTML兼容总结
  8. Material Design 开发利器:Android Design Support Library 介绍
  9. php中的单引号、双引号和转义字符
  10. Disruptor 为什么这么快?
  11. php的register_long_arrays可以关闭以提高性能
  12. 什么是SpringCloud
  13. 雷林鹏分享:XMLHttpRequest 对象
  14. 【UML】:类图
  15. asp:ObjectDataSource+asp:GridView 实现真分页
  16. Oracle查询结果中:一列中相同的值或一列中重复的值,只显示一次
  17. x64 win64编译环境下ADO链接Access数据库的问题解决
  18. 解决kylin build cube第一步报错:java.lang.NullPointerException
  19. windows 设置定时锁屏
  20. throw、try 和 catch

热门文章

  1. Mac OS ssh 禁用密码登陆
  2. PyQT5:信号和槽
  3. 排查dubbo接口重复注销问题,我发现了一个巧妙的设计
  4. 大数据最后一公里——2021年五大开源数据可视化BI方案对比
  5. 使用Dockerfile Maven插件
  6. Elasticsearch(ES)的高级搜索(DSL搜索)(下篇)
  7. Apache Dolphin Scheduler - Docker Compose 详解
  8. Docker 配置国内镜像加速器
  9. php环境 安装
  10. django 安装与配置-01