python如何快速查找到想要的文档

字多不看版,直接体验

待补充

演示代码

# -*- coding:UTF-8 -*-# region 导入必要的依赖包
import os
import subprocess
from enum import Enum模块名 = 'pyperclip'
try:import pyperclip  # 需要安装 pyperclip 模块,以支持粘贴板操作
except ImportError as impErr:print(f"尝试导入 {模块名} 依赖时检测到异常:{impErr}")print(f"尝试安装 {模块名} 模块:")try:os.system(f"pip install {模块名}")except OSError as osErr:print(f"尝试安装模块 {模块名} 时检测到异常:{osErr}")exit(0)else:try:import pyperclipexcept ImportError as impErr:print(f"再次尝试导入 {模块名} 依赖时检测到异常:{impErr}")exit(0)模块名 = 'DebugInfo'
try:from DebugInfo.DebugInfo import *
except ImportError as impErr:print(f"尝试导入 {模块名} 依赖时检测到异常:{impErr}")print(f"尝试安装 {模块名} 模块:")try:os.system(f"pip install {模块名}")except OSError as osErr:print(f"尝试安装模块 {模块名} 时检测到异常:{osErr}")exit(0)else:try:from DebugInfo.DebugInfo import *except ImportError as impErr:print(f"再次尝试导入 {模块名} 依赖时检测到异常:{impErr}")exit(0)模块名 = 'difflib'
try:import difflib  # 需要安装 difflib 模块,以支持字符差异对比操作
except ImportError as impErr:print(f"尝试导入 {模块名} 依赖时检测到异常:{impErr}")print(f"尝试安装 {模块名} 模块:")try:os.system(f"pip install {模块名}")except OSError as osErr:print(f"尝试安装模块 {模块名} 时检测到异常:{osErr}")exit(0)else:try:import difflibexcept ImportError as impErr:print(f"再次尝试导入 {模块名} 依赖时检测到异常:{impErr}")exit(0)# endregion# 定义一个 命令行参数类,用于解析和记录命令行参数class 文档路径操作结果(Enum):参数异常: int = -1操作完成: int = 0返回上一级: int = 1退出程序: int = 2def 编辑文档(文档路径: str, 搜索接口: 搜索接口基类 = None, 画板: 打印模板 = False):画板 = 画板 if isinstance(画板, 打印模板) else 打印模板()画板.执行位置(编辑文档)文档路径 = str(文档路径 if 文档路径 else '').strip()if not os.path.isfile(文档路径):return Nonenotepad = os.getenv('notepad--')if not notepad:# 如果 notepad 变量不存在,则尝试搜索 notepad--.exe 程序if isinstance(搜索接口, 搜索接口基类) and 搜索接口.可用:搜索结果 = 搜索接口.搜索(搜索关键字='notepad--.exe',搜文档=True,搜路径=False,画板=画板.副本)if 搜索结果.总数 > 0:for 结果 in 搜索结果.结果列表:if 结果.lower().endswith('notepad--.exe'):notepad = 结果breakif notepad and notepad.lower().endswith('notepad--.exe') and os.path.isfile(notepad):# 尝试使用 notepad 来打开路径shell指令: str = f'"{notepad}" "{文档路径}"'subprocess.Popen(shell指令)else:# 使用系统默认程序打开路径if 在nt系统中():os.startfile(文档路径)else:画板.提示错误('不受支持的操作系统')def 文档操作(文档列表: str or list[str], 搜索接口: 搜索接口基类, 画板: 打印模板 = None) -> 文档路径操作结果:画板 = 画板 if isinstance(画板, 打印模板) else 打印模板()画板.执行位置(文档操作)if isinstance(文档列表, str):文档列表 = (文档列表 if 文档列表 else '').strip()if not (文档列表 and os.path.isfile(文档列表)):if not 文档列表:画板.提示错误(红字('不存在待操作文档'))else:画板.提示错误(f'待操作文档不存在: {红字(文档列表)}')return 文档路径操作结果.参数异常elif isinstance(文档列表, list):文档列表 = [文档.strip() for 文档 in 文档列表]文档列表 = [文档 for 文档 in 文档列表 if 文档]不存在文档列表 = [文档 for 文档 in 文档列表 if not os.path.isfile(文档)]if 不存在文档列表:if len(不存在文档列表) == 1:画板.消息(f'文档不存在: {红字(不存在文档列表[0])}')else:画板.消息('以下文档不存在:')画板.准备表格()画板.添加多行(不存在文档列表, 拆分列数=1, 修饰方法=红字).展示表格()return 文档路径操作结果.参数异常else:文档列表 = str(文档列表).strip()if not os.path.isfile(文档列表):画板.提示错误('待操作文档不存在' + '' if not 文档列表 else f': {红字(文档列表)}')return 文档路径操作结果.参数异常# 文档列表统一成列表形式文档列表 = 文档列表 if isinstance(文档列表, list) else [文档列表]if not 文档列表:画板.提示错误(红字('不存在待操作文档'))return 文档路径操作结果.参数异常画板.消息(f'待操作文档是: {绿字(文档列表[0])}')操作选项: 交互接口类 = 交互接口类()操作选项.添加选项(代号=1, 选项='打开', 备注='调用默认的系统程序打开该文档')操作选项.添加选项(代号=1.1, 选项='编辑', 备注='调用notepad来打开指定的文档')操作选项.添加选项(代号='del', 选项='删除文档', 备注='删除该文档')操作选项.添加选项(选项='-')操作选项.添加选项(代号='r', 选项='返回上级操作')操作选择 = 操作选项.发起选项交互(输入提示='请选择需要的操作(0: 退出程序):', 画板=画板.副本)原文档路径, 原文档名 = os.path.split(文档列表[0])if not 原文档路径 and 原文档名:原文档路径, 原文档名 = os.path.split(os.path.abspath(文档列表[0]))if '0' in 操作选择.代号:# 用户要求退出return 文档路径操作结果.退出程序elif 'r' in 操作选择.代号:# 用户要求返回上级操作return 文档路径操作结果.返回上一级elif '1' in 操作选择.代号:# 用户要求打开文档try:if 在nt系统中():os.startfile(文档列表[0])elif 在posix系统中():subprocess.call(['xdg-open', 文档列表[0]])else:画板.提示错误('不受支持的操作系统')except Exception as exp:画板.提示错误(f'打开文档失败: {exp}')交互接口类.发起文本交互(输入提示='输入任意字符以退出:', 允许空值=True, 画板=画板.副本)finally:return 文档路径操作结果.操作完成elif '1.1' in 操作选择.代号:# 用户要求编辑文档编辑文档(文档路径=文档列表[0], 搜索接口=搜索接口, 画板=画板.副本)return 文档路径操作结果.操作完成elif 'del' in 操作选择.代号:# 用户要求删除文档for 文档 in 文档列表:os.system(f'del /q "{文档}"')return 文档路径操作结果.操作完成else:# 不受支持的操作项画板.提示错误(f'不受支持的操作: {操作选择.代号}:{操作选择.选项}')return 文档路径操作结果.返回上一级if __name__ == '__main__':画板 = 打印模板(False)画板.执行位置(__file__)everything搜索 = 本地搜索接口类(everything地址='127.0.0.1', everything端口=23)while True:while True:文档选择 = 交互接口类.指定选择文档(输入提示='请输入关键字以定位文档(0: 退出程序):',搜索接口=everything搜索,画板=画板.副本)if '0' in 文档选择:# 用户要求退出exit(0)操作结果 = 文档操作(文档列表=文档选择, 搜索接口=everything搜索, 画板=画板.副本)if 操作结果 in [文档路径操作结果.返回上一级, 文档路径操作结果.参数异常]:if 操作结果 is 文档路径操作结果.参数异常:搜索关键字 = ''# 用户要求返回本级continueelse:exit(0)

👆以上代码中, 我们定义了一个本地搜索接口类对象,该类通过everything开放的http服务,使用了everything搜索引擎的能力,为文档选择提供了强效的支持,大大提高了用用户定位和选择文档的效率。

关于如何打开everything的http服务,您可以参考:everything开通http服务

👆以上代码中, 我们通过交互接口类发起了指定选择文档交互,用户可以通过输入关键字快速的定位交选择文档,如下👇
20231123150941

在上图👆中,用户输入了关键字debuginfo.py,程序通过everything快速的定位出了关键文档供用户选择,我们看到用户选择了6号文档,程序反馈了用户所选择的文档。

提高效率

在上图👆中,我们看到用户输入的关键字 debuginfo.py 定位到了13个文档,虽然缩小了范围,但还是不甚清晰,区分文档比较困难。

那么,程序支持用户通过符号 来使用多重关键字,如下👇
20231123151431

在上图👆中,我们看到用户输入了关键字 dyy|appdata|debuginfo.py,程序列出了最匹配的4个候选文档供用户选择,并且程序把用户的关键字都已经标注了颜色,大大提升了用户选择识别文档的效率,提高了交互体验。

小结

这就是今天带来的如何在python中快速定位/选择文档的分享,欢迎大家讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/163896.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PTA-成绩转换

本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则: 大于等于90分为A;小于90且大于等于80为B;小于80且大于等于70为C;小于70且大于等于60为D;小于60为E。 输入格式: 输入在一行中给出一个整数的百分制成…

羊大师教你如何科学控制体重,轻松瘦下来

羊大师教你如何科学控制体重,轻松瘦下来 我们都知道,控制体重对于保持健康和美丽至关重要。然而,许多人在减肥的道路上走得波折重重,常常陷入挫败和不知所措的境地。那么,如何科学控制体重,轻松瘦下来呢&a…

项目经理只需要有PMP证书就行?

就目前而言,大部分人对于项目经理的认识还停留在:有项目管理经验,有对应的工作年限,有PMP证书。所以绝大多数人都认为只要报考了PMP项目管理,取得PMP证书,即可加入项目经理的圈子,薪资翻倍。 但…

协同过滤与矩阵分解讲解(PPT)

总览 协同过滤算法,就是一种完全依赖用户和物品之间行为关系的推荐算法。 从字面理解,协同大家的反馈、评价和意见一起对海量的信息进行过滤,从中筛选出用户可能感兴趣的信息。 知识概括 从这几个方面进行分析。 一、基于用户的协同过滤 显示…

6个PPT素材网站,让你快速做出好看的PPT

找PPT模板一定要收藏好这6个网站,能让你快速做出好看的PPT,重点十可以免费下载,赶紧收藏! 1、菜鸟图库 https://www.sucai999.com/search/ppt/0_0_0_1.html?vNTYwNDUx 菜鸟图库网有非常丰富的免费素材,像设计类、办公…

力扣labuladong——一刷day48

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣1602. 找到二叉树中最近的右侧节点二、力扣437. 路径总和 III三、力扣560. 和为 K 的子数组 前言 二叉树的递归分为「遍历」和「分解问题」两种思维模式…

第7章-使用统计方法进行变量有效性测试-7.4.2-多元线性回归

目录 多元线性回归模型 总体回归函数 样本回归函数 线性回归模型的假定 普通最小二乘法(Ordinary Least Squares,OLS) 拟合优度指标 F检验 回归系数的t检验 Python中构建多元线性回归模型 数据理解 数据读取 数据清洗 相关分析 …

想考教师编制专业不对口怎么办?

很多人在想要步入教师行业时,会遇到一个问题:专业不对口。这种情况可能会让你感到困惑和沮丧,但不要气馁,因为有很多方法可以让你实现自己的梦想。 可以通过提高自己的教育水平和能力来弥补专业不对口的缺陷。你可以通过参加教师资…

品牌小红书koc投放策略分享,纯干货!

作为中国具有影响力的时尚美妆社交平台,小红书与其充满活力的用户群体成为品牌寻找优质KOC合作的理想平台。本文伯乐网络传媒将探讨品牌如何利用小红书的KOC投放策略,实现更广泛的市场覆盖和更有效的品牌营销。 一、明确目标受众与KOC合作需求 在开始策…

containerd Snapshots功能解析

containerd Snapshots功能解析 snapshot是containerd的一个核心功能,用于创建和管理容器的文件系统。 本篇containerd版本为v1.7.9。 本文以 ctr i pull命令为例,分析containerd的snapshot “创建” 相关的功能。 ctr命令 ctr image相关命令的实现在cmd…

《人件》读书笔记

文章目录 一、书名和作者二、书籍概览2.1 主要论点和结构2.2 目标读者和应用场景 三、核心观点与主题3.1 管理团队主题3.2 改善工作环境主题3.3 正确的人主题3.4 团队项目管理主题 四、亮点与启发4.1 最有影响的观点4.2 对个人专业发展的启示 五、批评与局限性5.1 可能存在争议…

leetcode (力扣) 97. 交错字符串(动态规划)

文章目录 题目描述思路分析完整代码 题目描述 给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串: s s1 s2 … sn t …

数据库——查询连续的月份

一、GP或PGSQL with recursive t(n) as (select date(2023-01-01) union all select n1 from t where n < now()) select to_char(n, yyyy-mm) as ny from t group by ny order by ny 二、Hive select add_months(FROM_UNIXTIME(unix_timestamp(SUBSTR(start_date, 1, 7…

rdf-file:组件内置协议(SP、DE、FUND、FUND_INDEX)

Rdf-File根据协议布局模板和数据定义模板,来进行文件的解析与生成。通过协议布局和数据定义模板&#xff0c;能够明确计算出头尾占用的行数&#xff0c;这样可以更精确的分离出head&#xff0c;body&#xff0c;tail。 目前组件实现的协议布局模板可以分为如下两大类&#xff…

【深度学习实验】图像处理(一):Python Imaging Library(PIL)库:图像读取、写入、复制、粘贴、几何变换、图像增强、图像滤波

文章目录 一、实验介绍二、实验环境1. 配置虚拟环境2. 库版本介绍 三、实验内容0. 安装 PIL 库1. 图像读取和写入a. 图像读取b. 图像写入c. 构建新图像 2. 图像复制粘贴a. 图像复制b. 图像局部复制c. 图像粘贴 3. 几何变换a. 图像调整大小b. 图像旋转c. 图像翻转 4. 图像增强a.…

cocos creator中AStar算法实例

引擎版本 —— cocos creator2.3.4

高端猫罐头有哪些?精选的5款优质的猫罐头推荐!

很多铲屎官看猫猫吃猫粮吃腻了&#xff0c;或者猫猫平时不喜欢喝水&#xff0c;又或者看猫猫太瘦了就想入手几款猫罐头但是又愁于不会选择&#xff0c;而且现在猫罐头风这么大不知道选什么好~ 作为一个开宠物店7年的店长&#xff0c;对于猫咪的饮食健康我一直都很重视&#xff…

数据结构与算法编程题16

已知长度为n的线性表A&#xff0c;请写一时间复杂度为O(n)、空间复杂度为O(1)的算法&#xff0c;该算法删除线性表中所有值为item的数据元素。 item 3 数组下标 i 0 1 2 3 4 5 6 7 8 顺序表&#xff1a; 1 2 3 4 3 3 5 3 7 #include <iostream> using namespace std;typ…

Linux常用基础命令及重要目录,配置文件功能介绍

目录 一&#xff0c;Linux常用必备基础命令 1&#xff0c;网络类命令 2&#xff0c;文件目录类命令 3&#xff0c;操作类命令 4&#xff0c;关机重启命令 5&#xff0c;帮助命令 6&#xff0c;查看显示类命令 7&#xff0c;命令常用快捷键 二&#xff0c;Linux重要目录…

文献阅读的六个步骤

对于科研人员来说&#xff0c;文献阅读是一项重要的任务&#xff0c;当然要找对方法和步骤&#xff0c;可以按照这些步骤来哦。 1、确定研究问题和目标&#xff1a;在开始阅读外文文献之前&#xff0c;明确您的研究问题和目标。这将帮助您更好地理解作者所说的话以及他们提出的…