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

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急救站]文件管理工具的更多相关文章

  1. Python测试 ——开发工具库

    Web UI测试自动化 splinter - web UI测试工具,基于selnium封装. selenium - web UI自动化测试. mechanize- Python中有状态的程序化Web浏 ...

  2. python测试开发工具库汇总(转载)

    Web UI测试自动化 splinter - web UI测试工具,基于selnium封装. selenium - web UI自动化测试. mechanize- Python中有状态的程序化Web浏 ...

  3. Python自然语言处理工具小结

    Python自然语言处理工具小结 作者:白宁超 2016年11月21日21:45:26 目录 [Python NLP]干货!详述Python NLTK下如何使用stanford NLP工具包(1) [ ...

  4. python 包管理工具

    python 包管理工具 Python当前的包管理工具链是 easy_install/pip + distribute/setuptools + distutils,显得较为混乱. 而将来的工具链组合 ...

  5. Python 包管理工具解惑

    Python 包管理工具解惑 本文链接:http://zengrong.net/post/2169.htm python packaging 一.困惑 作为一个 Python 初学者,我在包管理上感到 ...

  6. Python包管理工具介绍

    常见的包管理工具及关系 setuptools -->distribute easy_install-->pip 1.distribute distribute是对标准库disutils模块 ...

  7. python包管理工具

    pip 是一个安装和管理 Python 包的工具 , 是 easy_install 的一个替换品.本文将详细说明 安装 pip 的方法和 使用 pip 的一些基本操作如安装.更新和卸载 python ...

  8. Python学习笔记 (1) :python简介、工具、编码及基础运算

    学习背景: 精通一门编程语言并编写出自己喜欢的程序是我多年的梦想,一定要找时间实现.此时想起了高中时的我对编程的兴趣十分浓厚,父母给自己购买了学习机插卡式的,只能敲basic代码,同时学校有386计算 ...

  9. Python包管理工具和多版本环境管理

    1. Python包管理工具 在安装Python包的过程中,经常涉及到distutils.setuptools.distribute.setup.py.easy_install.easy_instal ...

  10. python入门:python包管理工具pip的安装

    pip 是一个安装和管理 Python 包的工具 , 是 easy_install 的一个替换品. distribute是setuptools的取代(Setuptools包后期不再维护了),pip是e ...

随机推荐

  1. 使用kube-bench检测Kubernetes集群安全

    目录 一.系统环境 二.前言 三.CIS (Center for Internet Security)简介 四.什么是Kube-Bench? 五.使用kube-bench检测不安全的设置 5.1 手动 ...

  2. CF-1860C Game on Permutation题解

    题意:在一条数轴上,Alice可以跳到在你所在点前面且值比当前所在点小的点.每回合可以向任意符合要求的点跳一次.当轮到Alice的回合同时不存在符合要求的点,Alice就赢了.Alice可以选择一个点 ...

  3. 【JMeter】使用BeanShell写入内容到文件

    使用BeanShell写入内容到文件 目录 使用BeanShell写入内容到文件 一.前言 二.提取 三.写入 一.前言 ​ 在我们日常工作中,可能会遇到需要将请求返回的数据写入到文件中.在我们使用J ...

  4. C#结合OpenCVSharp4使用直方图算法比较图片相似度

    C#结合OpenCVSharp4使用直方图算法比较图片相似度 直方图有灰度直方图.颜色直方图,如果是灰度图像,那么就用灰度直方图,这里使用颜色直方图来计算两个图片的相似度. 这里只记录如何使用,至于算 ...

  5. 小知识:PPT的幻灯片放映设置

    最近给某客户讲课时,碰到了幻灯片自动翻页的情况,发现是因为之前做过粗略的计时演练,有些片子就快速过了. 问题现象: 结果导致放映时也出现了某些片子快速被自动翻页. 解决方案: 设置成手动推进幻灯片的方 ...

  6. Vue源码学习(七):合并生命周期(混入Vue.Mixin)

    好家伙,   1.使用场景 现在来,来想一下,作为一个使用Vue的开发者,假设现在我们要使用created(),我们会如何使用 1.1.  .vue文件中使用 <template> < ...

  7. 洛谷题解 | P1051 谁拿了最多奖学金

    ​目录 题目描述 输入格式 输出格式 输入输出样例 提示 题目思路 AC代码 题目描述 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 1. 院士奖学金,每人 ...

  8. Java虚拟机(JVM):第三幕:自动内存管理 - 垃圾收集器与内存分配策略

    前言:Java与C++之间有一堵高墙,主要是有内存动态分配和垃圾收集技术组成的.墙外的人想要进来,墙内的人想要出去. 一.概述 每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的.内存的分配和 ...

  9. React技术栈支援Vue项目,你需要提前了解的

    写在前面 react整体是函数式的思想,把组件设计成纯组件,状态和逻辑通过参数传入,而vue的思想是响应式的,也就是基于是数据可变的,通过对每一个属性建立Watcher来监听, 当属性变化的时候,响应 ...

  10. MAC Big Sur系统升级导致三星移动硬盘T7无法识别解决方案

    一.问题 MAC系统升级后总是导致三星移动硬盘(加密)无法被识别,影响正常使用.问售后让去官网下载最新驱动,第一次升级有用,在升级就没用了. 升级系统版本MAC 15.5.1重新安装官网驱动仍然无法识 ...