zoukankan      html  css  js  c++  java
  • Python小工具:据说这是搜索文件最快的工具!没有之一!一起感受下......

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

    那必须不能忍,于是我自己做了一个文件搜索工具,犄角旮旯的文件都能一秒钟搜索出来的那种!
    保证能把你们男(女)朋友那些藏的很深的不可告人的文件分分钟找出来~
    在这里插入图片描述
    用到的环境
    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()
    

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

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

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

  • 相关阅读:
    LeetCode 654. Maximum Binary Tree
    LeetCode 680. Valid Palindrome II
    LeetCode 581. Shortest Unsorted Continuous Subarray
    LeetCode 665. Non-decreasing Array
    LeetCode 604. Design Compressed String Iterator
    LeetCode Largest Palindrome Product
    LeetCode 605. Can Place Flowers
    LeetCode Sum of Square Numbers
    LeetCode Maximum Average Subarray I
    LeetCode 673. Number of Longest Increasing Subsequence
  • 原文地址:https://www.cnblogs.com/hahaa/p/15446410.html
Copyright © 2011-2022 走看看