• 电脑文件又又又找不到了?教你用Python一招解决!让电脑秘密无处可藏!


    在日常生活工作中,我们很多时候都是凭着记忆去找文件,要是文件突然不见了,就只能用电脑自带的搜索工具去找,但是Python也能帮助我们找文件,你知道吗?

    于是老夫心血来潮用Python写了个文件搜索工具,感觉还是比电脑本身的方便一些。

    先给大家安排一波福利…

                                                                                                                       滑稽

    开发环境

    这是要用到的软件,大家没有的话,可以私信我,本文的完整源码,相关视频教程等等都可以获取到

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

    具体怎么实现的我就不一一去说了,大家要是只要代码的话,我会把代码放在下面,如果想学好,自己实现怎么做到的,可以看我这个教程,一步一步的手把手教大家实现

    代码:

    """"""
    """
    Python开发电脑文件搜索工具,让你硬盘中的秘密文件文件无处可藏
    
    开发环境:
        1. 解释器: Python 3.6.5 | Anaconda, Inc.
        2. 编辑器: pycharm 专业版
    
    课程收获:
        - tkinter 的使用
        - 桌面应用程序开发
    """
    import tkinter as tk
    from tkinter import messagebox, filedialog
    import os
    
    root = tk.Tk()
    root.title('电脑文件搜索工具')
    root.geometry('600x300')
    
    # 搜索内容显示的组件
    search_frame = tk.Frame(root)
    search_frame.pack()
    
    # Label 文本框
    # pad padding 边框
    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)
    
    submit = tk.Button(search_frame, text='搜索')
    submit.pack(side=tk.LEFT, padx=10, pady=10)
    # 一个程序员的能力与他敲过的代码是成正比的,如果想成为大牛
    
    # ctrl + 鼠标左键 查看源码
    list_box = tk.Listbox(root)
    list_box.pack(fill=tk.BOTH, expand=True, side=tk.LEFT)
    
    
    def search():
        print('按钮被点击了')
        file_type = type_entry.get()
        key = key_entry.get()
        if not key:
            messagebox.showinfo('出错了', '请输入关键字再搜索')
            return
        if not file_type:
            messagebox.showinfo('出错了', '请输入文件类型再搜索')
            return
        print('关键字:', key)
        print('文件类型:', file_type)
        # 当都输入了内容的时候,在进行操作,
        # 调用 Windows 的文件管理系统,获取指定的目录
        fn = filedialog.askdirectory()
        list_box.delete(0, tk.END)
        print(fn)
        # 目录,目录的子目录,目录的文件
        for root_path, dirs, files in os.walk(fn):
            # print(root_path, dirs, files)
            for file in files:
                file_path = root_path + '/' + file
                # 然后过滤指定的文件类型
                if file_path.endswith(file_type):
                    print(file_path)
                    # 从指定文件里面查找关键字
                    content = open(file_path, mode='r', encoding='utf-8-sig').read()
                    if key in content:
                        # 将找到内容的文件路径显示到列表盒子里面
                        list_box.insert(tk.END, file_path)
    
        """
            编程思维,量变达到质变
        
        """
    
    
    submit.config(command=search)
    
    """添加滚动栏"""
    sb = tk.Scrollbar(root)
    sb.pack(side=tk.LEFT, fill=tk.Y)
    # 将 sb 绑定到 list_box
    sb.config(command=list_box.yview)
    list_box.config(yscrollcommand=sb.set)
    
    """添加列表元素点击事件"""
    
    
    def list_box_click(event):
        # print(event)
        # print('添加列表元素点击事件')
        # 获取点击的内容
        index = list_box.curselection()
        # print(index)
        file_path = list_box.get(index[0])
        # print(file_path)
        # 获取到了文件路径,读取内容,显示到新的窗口
    
        #显示查询到的内容
        window = tk.Toplevel()  # 子窗口对象
        window.title('文件查看')
    
        content = open(file_path, mode='r', encoding='utf-8-sig').read()
    
        text = tk.Text(window)
        text.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
        text.insert(tk.END, content)
    
        #创建滚动窗口并布局到页面上 
        sb2 = tk.Scrollbar(window)
        sb2.pack(side=tk.RIGHT, fill=tk.Y)
        # 将滚动栏绑定到文本框组件上
        sb2.config(command=text.yview)
        text.config(yscrollcommand=sb2.set)
    
    #添加绑定时间,当列表框组件里面的元祖被点击之后触发
    
    list_box.bind('<Double-Button-1>', list_box_click)
    
    root.mainloop()
  • 相关阅读:
    DBCP数据源使用
    实例介绍Cocos2d-x开关菜单
    Material UI:很强大的CSS框架
    stl之hash_multimap
    使用OpenCV滑动条写成的简单调色器,实时输出RGB值
    Android中怎样自己制作su
    华南运维论坛 2015-07-25
    POJ2417 Baby-Step-Gaint-Step 算法
    《网络编程》套接字地址与名字转换
    Hibernate缓存
  • 原文地址:https://www.cnblogs.com/hahaa/p/14995198.html
Copyright © 2020-2023  润新知