[Python急救站]文件管理工具
对于一个程序员,有时候文件太多,忘记放哪里了,那有没有一个可以帮你定位到文件的文件管理工具呢,抱着这样的想法,我做了以下这个代码,可以快速定位找到文件所在位置。
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急救站]文件管理工具的更多相关文章
- Python测试 ——开发工具库
Web UI测试自动化 splinter - web UI测试工具,基于selnium封装. selenium - web UI自动化测试. mechanize- Python中有状态的程序化Web浏 ...
- python测试开发工具库汇总(转载)
Web UI测试自动化 splinter - web UI测试工具,基于selnium封装. selenium - web UI自动化测试. mechanize- Python中有状态的程序化Web浏 ...
- Python自然语言处理工具小结
Python自然语言处理工具小结 作者:白宁超 2016年11月21日21:45:26 目录 [Python NLP]干货!详述Python NLTK下如何使用stanford NLP工具包(1) [ ...
- python 包管理工具
python 包管理工具 Python当前的包管理工具链是 easy_install/pip + distribute/setuptools + distutils,显得较为混乱. 而将来的工具链组合 ...
- Python 包管理工具解惑
Python 包管理工具解惑 本文链接:http://zengrong.net/post/2169.htm python packaging 一.困惑 作为一个 Python 初学者,我在包管理上感到 ...
- Python包管理工具介绍
常见的包管理工具及关系 setuptools -->distribute easy_install-->pip 1.distribute distribute是对标准库disutils模块 ...
- python包管理工具
pip 是一个安装和管理 Python 包的工具 , 是 easy_install 的一个替换品.本文将详细说明 安装 pip 的方法和 使用 pip 的一些基本操作如安装.更新和卸载 python ...
- Python学习笔记 (1) :python简介、工具、编码及基础运算
学习背景: 精通一门编程语言并编写出自己喜欢的程序是我多年的梦想,一定要找时间实现.此时想起了高中时的我对编程的兴趣十分浓厚,父母给自己购买了学习机插卡式的,只能敲basic代码,同时学校有386计算 ...
- Python包管理工具和多版本环境管理
1. Python包管理工具 在安装Python包的过程中,经常涉及到distutils.setuptools.distribute.setup.py.easy_install.easy_instal ...
- python入门:python包管理工具pip的安装
pip 是一个安装和管理 Python 包的工具 , 是 easy_install 的一个替换品. distribute是setuptools的取代(Setuptools包后期不再维护了),pip是e ...
随机推荐
- .NET Core基础到实战案例零碎学习笔记
前言:前段时间根据 [老张的哲学] 大佬讲解的视频做的笔记,讲的很不错.此文主要记录JWT/DI依赖注入/AOP面向切面编程/DTO/解决跨域等相关知识,还包含一些.NET Core项目实战的一些案例 ...
- 老问题了:idea中使用maven archetype新建项目时卡住
背景 作为一个后端Java打工人,idea就是最重要的打饭工具.创建项目,熟悉吧,但是,这么多年下来,因为idea换了版本,电脑换了等等,我还是时不时遇到根据maven archetype新建mave ...
- Linux 内核设备驱动程序的IO寄存器访问 (上)
Linux 内核提供了一套可缓存的设备 IO 寄存器访问机制,即 regmap.regmap 机制支持以统一的接口,访问多种不同类型的设备 IO 寄存器,如内存映射的设备 IO 寄存器,和需要通过 I ...
- 按关键字API接口搜索天眼查企业数据
一.如果你想要查找某一个企业的基本信息或是对行业中的企业进行筛选,那么使用API接口搜索天眼查企业数据会非常方便. 首先,你需要获取天眼查API的access_token,这可以通过注册账号获取.一旦 ...
- Go开始:Go基本元素介绍
本文深入探讨了Go编程语言中的核心概念,包括标识符.关键字.具名函数.具名值.定义类型.类型别名.包和模块管理,以及代码块和断行.这些元素是构成Go程序的基础,也是编写高质量代码的关键. 关注Tech ...
- Nomad 系列-安装
系列文章 Nomad 系列文章 Nomad 简介 开新坑!近期算是把自己的家庭实验室环境初步搞好了,终于可以开始进入正题研究了. 首先开始的是 HashiCorp Nomad 系列,欢迎阅读. 关于 ...
- SpringBoot获取树状结构数据-SQL处理
前言 在开发中,层级数据(树状结构)的获取往往可能是我们一大难点,我现在将自己获取的树状结构数据方法总结如下,希望能给有需要的小伙伴有所帮助! 一.测试数据准备 /* Navicat Premium ...
- LVS DR模式负载均衡群集部署
LVS DR模式负载均衡群集部署 1 LVS-DR 模式的特点 直接路由直接路由 调节器仅作为客户端的访问入口,节点服务器的响应消息是直接返回客户端的,不需要经过调节器(与NAT模式的区别)节点服务器 ...
- IOS苹果应用IPA一键签名工具(苹果重签名,企业签名,Windows平台,时间控制)
苹果应用IPA一键签名工具可以在windows平台对苹果应用IPA文件重新签名,无需MAC苹果电脑和配置XCODE开发环境,便可以直接对IPA文件进行签名,同时支持修改BundleID, 不受描述文件 ...
- 基于Protege的知识建模实战
一.Protege简介.用途和特点 1.Protege简介 Protege是斯坦福大学医学院生物信息研究中心基于Java开发的本体编辑和本体开发工具,也是基于知识的编辑器,属于开放源代码软件.这个软件 ...