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

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

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

用到的环境

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('', list_click)

root.mainloop()

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

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

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

文章链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。