• 自制python搜索小工具,比电脑自带的还要快


    前言

    嗨嗨,大家晚上好 ~
    当自己电脑文件很多还有点乱,不记得自己文件放哪里的时候,用电脑自带的搜索文件,这个等待时间可慢了

    请添加图片描述

    对我们这种敲代码的,这能忍吗,所以我们不如自己用python做一个搜索工具!犄角旮旯的文件都能一秒钟搜索出来的那种!
    一不小心还能把你们男(女)朋友那些藏的很深的不可告人的文件分分钟找出来~

    话不多说,赶紧开始吧

    请添加图片描述

    环境准备

    1. 解释器: Python 3.8.8 | Anaconda, Inc.
    2. 编辑器: pycharm 专业版

    不会安装的可以私信我哦 😎

    完整代码

    就不把代码单列出来咯,一次全放出来 ~
    我在里面写了注释哦

    请添加图片描述

    需要源码、教程,或者是自己有关python不懂的问题,都可以来这里哦 https://jq.qq.com/?_wv=1027&k=j1rUTY72 这里还有学习资料与免费课程领取

    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)
    
    """点击按钮搜索文件"""
    
    
    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()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84

    好啦,今天的分享到这里就结束了 ~
    感兴趣的朋友赶紧去试一下,嘿嘿

    对文章有问题的,或者有其他关于python的问题,可以在评论区留言或者私信我哦
    觉得我分享的文章不错的话,可以关注一下我,或者给文章点赞(/≧▽≦)/

    请添加图片描述

  • 相关阅读:
    【精讲】vue框架 核心vuex内容及项目练习
    gstreamer协商negoation
    C#创建AutoMapper的映射配置
    IDEA 导入项目中文注释乱码如何解决
    webpack 3 + Vue2 使用dotenv配置多环境
    C++实现的基于αβ剪枝算法五子棋设计
    网络安全(黑客技术)2024年三个月自学手册
    阻燃窗帘的清洁方法和保养方法-江南爱窗帘十大品牌
    【算法题】2873. 有序三元组中的最大值 I
    PAT 1035 Password
  • 原文地址:https://blog.csdn.net/aliYz/article/details/126836534