• 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()
    

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

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

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

  • 相关阅读:
    ios设备new Date('2019-07-26 11:00:00')报错
    vue图片压缩(不失真)
    ios微信端网页点击右上角复制链接或在浏览器打开,得不到当前页地址(动态路由)
    ios打开网页,输入框获取焦点键盘弹起,关闭键盘,界面下方空白不回弹
    vue-cli打包后vendor.js文件太大怎么办
    ios点击有300毫秒延迟,输入框必须重压或长按才能获取焦点唤起软键盘
    ios微信端上下滑动页面,若触摸的是input区域,页面内不滚动,整个页面被拖动了
    vue-cli打包优化之分析工具webpack-bundle-analyzer
    vue引入fastclick设置输入框type="number"报错Failed to execute 'setSelectionRange' on 'HTMLInputElement': The input element's type ('number') does not support selection.的解决办法
    js/vue图片压缩
  • 原文地址:https://www.cnblogs.com/hahaa/p/15446410.html
Copyright © 2020-2023  润新知