如何用Python实现文件标题一键点击打开功能?
实现可点击打开的PDF文件搜索工具
针对你的需求,我们可以通过两种方式实现点击文件名打开对应PDF的功能:一种是在支持ANSI链接的终端输出可点击链接,另一种是通过交互式选择打开文件,以下是修改后的代码:
方案1:终端输出可点击链接(需终端支持)
这种方案会在终端输出符合ANSI标准的可点击链接,点击后直接用系统默认程序打开PDF文件:
import os from pathlib import Path import webbrowser class Buscador: @staticmethod def Busca(): opcao = input('Por qual palavra deseja buscar o documento? ') docs_path = "/home/paulo/Documentos" for file in os.listdir(docs_path): if file.endswith(".pdf"): file_path = os.path.join(docs_path, file) file_name = Path(file).stem if opcao in file_name: # 构造终端可点击链接(ANSI格式) clickable_link = f"\033]8;;file://{file_path}\033\\{file_name}\033]8;;\033\\" print(clickable_link) print(' ') Buscador.Busca()
说明:
- 用
@staticmethod修正了类方法的定义问题 - 构造完整的文件路径
file_path,确保能正确定位文件 - ANSI链接格式
\033]8;;file://{file_path}\033\\{显示文本}\033]8;;\033\\可让支持的终端(如Windows Terminal、iTerm2等)识别为可点击链接,点击后调用系统默认程序打开文件
方案2:交互式选择打开(兼容所有终端)
如果你的终端不支持ANSI链接,可以用序号选择的方式打开文件,适配所有终端环境:
import os from pathlib import Path import webbrowser class Buscador: @staticmethod def Busca(): opcao = input('Por qual palavra deseja buscar o documento? ') docs_path = "/home/paulo/Documentos" matched_files = [] # 先收集所有匹配的文件 for file in os.listdir(docs_path): if file.endswith(".pdf"): file_path = os.path.join(docs_path, file) file_name = Path(file).stem if opcao in file_name: matched_files.append((file_name, file_path)) # 显示匹配结果 if not matched_files: print("Nenhum documento encontrado.") return print("Documentos encontrados:") for idx, (name, _) in enumerate(matched_files, 1): print(f"{idx}. {name}") # 选择打开文件 while True: try: choice = int(input("\nDigite o número do documento para abrir (0 para sair): ")) if choice == 0: break if 1 <= choice <= len(matched_files): _, file_path = matched_files[choice-1] webbrowser.open(f"file://{file_path}") print(f"Abrindo {matched_files[choice-1][0]}...") else: print("Número inválido, tente novamente.") except ValueError: print("Por favor, digite um número válido.") Buscador.Busca()
说明:
- 先收集所有匹配的文件,避免边遍历边处理的混乱
- 通过序号选择要打开的文件,兼容所有终端环境
- 使用
webbrowser.open()调用系统默认程序打开PDF文件,跨平台有效
内容的提问来源于stack exchange,提问作者pauloguilherme
相关产品推荐
相关产品推荐

