电脑文件又又又找不到了?教你用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()

 

posted @ 2021-07-10 22:47  轻松学Python  阅读(344)  评论(0编辑  收藏  举报