首页 > 编程语言 >[Python急救站]文件管理工具

[Python急救站]文件管理工具

时间:2023-12-11 12:47:00浏览次数:33  
标签:急救站 Python text frame 管理工具 window result file tk

对于一个程序员,有时候文件太多,忘记放哪里了,那有没有一个可以帮你定位到文件的文件管理工具呢,抱着这样的想法,我做了以下这个代码,可以快速定位找到文件所在位置。

import os
import tkinter as tk
import time
import subprocess


# 函数用于搜索文件
def search_files():
    file_name = entry.get()  # 从输入框获取文件名

    start_time = time.time()  # 开始计时

    found_files = []  # 存储找到的文件的列表
    for drive in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":  # 遍历所有可能的盘符
        drive_path = drive + ":\\"
        for root, dirs, files in os.walk(drive_path):  # 遍历目录树
            for file in files:  # 遍历当前目录中的所有文件
                if file_name.lower() in file.lower():  # 检查文件名是否与搜索查询匹配
                    found_files.append((os.path.abspath(os.path.join(root, file)), file))  # 将文件添加到列表中
            for i in dirs:  # 遍历当前目录中的所有子目录
                if file_name.lower() in i.lower():  # 检查目录名是否与搜索查询匹配
                    found_files.append((os.path.abspath(os.path.join(root, i)), i))  # 将目录添加到列表中

    end_time = time.time()  # 停止计时
    elapsed_time = end_time - start_time  # 计算经过的时间

    result_text.delete(1.0, tk.END)  # 清空结果文本框
    if len(found_files) > 0:  # 如果找到了文件
        result_text.insert(tk.END, f"找到以下文件或文件夹匹配文件名 '{file_name}':\n")
        for i, (path, name) in enumerate(found_files):  # 遍历找到的文件
            result_text.insert(tk.END, f"{path} {name}\n")  # 显示文件路径和名称
        open_button.config(state=tk.NORMAL)  # 启用“打开文件夹”按钮
    else:  # 如果未找到文件
        result_text.insert(tk.END, f"未找到匹配文件名 '{file_name}' 的文件或文件夹。")
        open_button.config(state=tk.DISABLED)  # 禁用“打开文件夹”按钮

    result_text.insert(tk.END, f"搜索耗时: {elapsed_time:.2f} 秒")  # 显示经过的时间


# 函数用于打开选定的目录
def open_directory():
    selected_file = result_text.get("sel.first", "sel.last")  # 从结果文本框中获取选定的文件
    if selected_file:
        subprocess.Popen(f'explorer /select,"{selected_file}"', shell=True)  # 打开包含文件的目录


window = tk.Tk()
window.title("文件管理工具")

# 获取屏幕宽度和高度
screen_width = window.winfo_screenwidth()
screen_height = window.winfo_screenheight()

# 计算窗口位置和大小
window_width = screen_width * 2 // 3
window_height = screen_height * 2 // 3
window_x = (screen_width - window_width) // 2
window_y = (screen_height - window_height) // 2

# 设置窗口位置和大小
window.geometry(f"{window_width}x{window_height}+{window_x}+{window_y}")

search_frame = tk.Frame(window)
search_frame.pack()

label = tk.Label(search_frame, text="请输入要搜索的文件名:")
label.pack(side=tk.LEFT)
entry = tk.Entry(search_frame)
entry.pack(side=tk.LEFT)

button_frame = tk.Frame(window)
button_frame.pack()

search_button = tk.Button(button_frame, text="搜索", command=search_files)
search_button.pack(side=tk.LEFT)

open_button = tk.Button(button_frame, text="打开文件夹", command=open_directory, state=tk.DISABLED)
open_button.pack(side=tk.LEFT)

result_frame = tk.Frame(window)
result_frame.pack(fill=tk.BOTH, expand=True)

scrollbar = tk.Scrollbar(result_frame)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

result_text = tk.Text(result_frame, selectbackground="lightblue", yscrollcommand=scrollbar.set)
result_text.pack(fill=tk.BOTH, expand=True)

scrollbar.config(command=result_text.yview)

result_text.tag_configure("sel", background="lightblue")

window.mainloop()

程序运行结果如下:

单击目录选择打开,即可打开文件所在位置。

好了赶紧去试试吧!

标签:急救站,Python,text,frame,管理工具,window,result,file,tk
From: https://www.cnblogs.com/python120/p/17894126.html

相关文章

  • Linux学习36- python3.9出现ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+
    遇到问题python3.9上安装requests库,requests包引入了urllib3,而新版本v2.x的urllib3需要OpenSSL1.1.1+以上版本所以就出现了报错File"/root/python39/lib/python3.9/site-packages/_pytest/assertion/rewrite.py",line186,inexec_moduleexec(co,module.__dict__......
  • Linux学习35- python3.9出现ModuleNotFoundError: No module named '_ctypes'的解决
    遇到问题pip安装第三方库的时候报错ModuleNotFoundError:Nomodulenamed'_ctypes'File"/usr/local/python3/lib/python3.9/ctypes/__init__.py",line7,in<module>from_ctypesimportUnion,Structure,ArrayModuleNotFoundError:Nomodulen......
  • 10行Python代码能做出哪些酷炫的事情?
    Python凭借其简洁的代码,赢得了许多开发者的喜爱。因此也就促使了更多开发者用Python开发新的模块,从而形成良性循环,Python可以凭借更加简短的代码实现许多有趣的操作。下面我们来看看,我们用不超过10行代码能实现些什么有趣的功能。一、生成二维码二维码又称二维条码,常见的二维码为QR......
  • spring boot 项目实现调用python工程的方法
    在SpringBoot中调用Python脚本或工程,主要有以下几种方式:1.使用ProcessBuilder或Runtime执行Python脚本这是最直接的方法,使用Java的ProcessBuilder或Runtime.getRuntime().exec()来执行Python脚本。优点:实现简单,无需额外依赖。缺点:处理输出和错误流可能较为繁琐......
  • 我用 AI 写的《JavaScript 工程师的 Python 指南》电子书发布啦!
    关于本书你好,我是luckrnx09,一名靠React恰饭的前端工程师,很高兴向你介绍我的第一本开源电子书《JavaScript工程师的Python指南》。本书的内容完全免费,开源地址:https://github.com/luckrnx09/python-guide-for-javascript-engineers为什么会有这本书2022年,ChatGPT引起了......
  • linux 开机自动启动python程序
    可以使用systemd服务来开机自动启用程序。假设要开机自动启动的python程序是:/opt/app.py可以创建一个systemd服务cd/etc/systemd/systemvimstart-python.service内容如下:[Unit]Description=PythonStartupServiceAfter=network.target[Service]ExecStart=/usr/b......
  • Python Numpy 数据分析常用数学运算
    Python的NumPy库是数据分析和科学计算的核心库之一,提供了广泛的数学运算功能,使得处理大型多维数组和矩阵运算变得简单高效。NumPy是进行数据分析和科学计算的基石,掌握其数学运算功能对于进行有效的数据处理和分析至关重要。本文主要介绍PythonNumpy中数据分析常用数学运算......
  • Python 通过 akshare 轻松绘制股票中国平安K线图
    想通过Python和akshare绘制K线图,网上找了很多代码,放在Pycharm中都是无法正常运行绘制的,于是自己整理了下并调试成功。环境:python3.9(miniconda3)、Pycharm、Win10需要用的模块或者工具库:akshare(1.11.91)、pandas(2.1.1)、numpy(1.26.2)、matplotlib(3.8.2)、mplfinanc......
  • 统信UOS/麒麟KYLINOS上安装python特定版本
    原文链接:统信UOS/麒麟KYLINOS上安装python特定版本hello,大家好啊!Python作为一种广泛使用的编程语言,其版本多样性给开发者带来了既便利又挑战的情况。不同的项目可能需要不同版本的Python,而在统信UOS/麒麟KYLINOS这样的操作系统上,如何灵活地管理和切换Python版本,就成为了一个值得探......
  • python高级之函数的参数
    函数的参数形参与实参介绍函数的参数分为形式参数和实际参数,简称形参和实参:形参即在定义函数时,括号内声明的参数。形参本质就是一个变量名,用来接收外部传来的值。实参即在调用函数时,括号内传入的值,值可以是常量、变量、表达式或三者的组合:#1:实参是常量res=my_min(1,2)#2......