You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 12:39:23