鱼C论坛

 找回密码
 立即注册
查看: 1399|回复: 11

[已解决]搜索到的值怎么在前面添加序号

[复制链接]
发表于 2021-8-9 13:46:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 qaz1234 于 2021-8-9 13:49 编辑

E:\firefox download\oss-aliyun-1.2.1.0.exe
D:\Program Files\oss-browser-win32-x64\oss-browser.exe
E:\Work\ALIYUN\software\ossutil64\ossutil64.exe

搜索到这三个路径,前面怎么添加序号来选择运行哪个exe
最佳答案
2021-8-9 16:19:54
#执行搜索
a = input("请输入程序名:")
if __name__=='__main__':
    exe_list = [file for file in search_files(a) if file.endswith('.exe')]
    print('--代号--|-------程序名------')
    print('\n'.join([f"    {i+1}    {f}" for i, f in enumerate(exe_list)]))
    print('---------------------------')
    code = input('选择你想要执行的程序代号:')  
    import os 
    os.system(f"start {exe_list[int(code)-1]}")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-9 13:55:14 From FishC Mobile | 显示全部楼层
存放在列表里?,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-9 13:57:47 | 显示全部楼层
本帖最后由 qaz1234 于 2021-8-9 13:59 编辑
wp231957 发表于 2021-8-9 13:55
存放在列表里?,


没有在列表里,是搜索本地.exe出来的路径,搜索是调用的everything-SDK
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-9 14:00:45 | 显示全部楼层
qaz1234 发表于 2021-8-9 13:57
没有在列表里,是搜索本地.exe出来的路径,搜索是调用的everything-SDK

你要操作everything的结果吗   基本上无法实现
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-9 14:08:46 | 显示全部楼层
wp231957 发表于 2021-8-9 14:00
你要操作everything的结果吗   基本上无法实现


我是想操作我搜索出来的这三个路径,使这三个路径可以选择
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-9 14:17:41 | 显示全部楼层
qaz1234 发表于 2021-8-9 14:08
我是想操作我搜索出来的这三个路径,使这三个路径可以选择

你在啥里操作这三个路径   要是你自己的app 还可以考虑   要是别人的   基本就不用考虑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-9 14:34:17 | 显示全部楼层
wp231957 发表于 2021-8-9 14:17
你在啥里操作这三个路径   要是你自己的app 还可以考虑   要是别人的   基本就不用考虑

我可能没说清楚,我贴一下代码吧。

我的目的是搜索我要打开的程序的exe,然后打开这个程序。windows的搜索太慢,所以我调用everything来搜索,现在的问题是我搜索到的结果有三个,我怎么选择我需要的那个结果

例如我搜索到了这三个路径,我想选择第二个打开
E:\firefox download\oss-aliyun-1.2.1.0.exe
D:\Program Files\oss-browser-win32-x64\oss-browser.exe
E:\Work\ALIYUN\software\ossutil64\ossutil64.exe

from ctypes import windll,byref,create_unicode_buffer


#以下代码调用everything-SDK
def search_files(file):
    Search = windll.LoadLibrary(r'E:\python\test\Everything-SDK\dll\everything64.dll')
    strBuff = create_unicode_buffer(255)

    Search.Everything_SetSearchW(file)
    Search.Everything_QueryW(True)

    Results = Search.Everything_GetNumResults()

    for index in range(Results):
        Search.Everything_GetResultFullPathNameW(index,byref(strBuff),len(strBuff))
        yield strBuff.value

    del Search
    del strBuff

#执行搜索
a = input("请输入程序名:")

if __name__=='__main__':
    for file in search_files(a):
        #path = file
        #b = os.path.dirname(path) #返回文件路径,不显示程序名
        #print (b)
        if file.endswith('.exe'): #判断名称的结尾是否是.exe
            print (file)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-9 14:56:47 | 显示全部楼层
qaz1234 发表于 2021-8-9 14:34
我可能没说清楚,我贴一下代码吧。

我的目的是搜索我要打开的程序的exe,然后打开这个程序。windows的 ...

改下后面这部分,看下这样可以不?
file_list = search_files(a)
    for idx in range(len(file_list)):
        #path = file
        #b = os.path.dirname(path) #返回文件路径,不显示程序名
        #print (b)
        if file.endswith('.exe'): #判断名称的结尾是否是.exe
            print ("{}、{}".format(idx,file_list[idx]))
    index = int(input("请输入序号以运行程序:"))
    os.system("start {}".format(file_list[index]))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-9 15:19:09 | 显示全部楼层
本帖最后由 qaz1234 于 2021-8-9 15:34 编辑
2012277033 发表于 2021-8-9 14:56
改下后面这部分,看下这样可以不?


改成这样吗
#执行搜索
a = input("请输入程序名:")

file_list = search_files(a)
for idx in range(len[file_list]):
    if file_list.endswith('.exe'): #判断名称的结尾是否是.exe
        print ("{}、{}".format(idx,file_list[idx]))
index = int(input("请输入序号以运行程序:"))
os.system("start {}".format(file_list[index]))


报这个错:
Traceback (most recent call last):
  File "E:/python/test/find-基于everthing搜索文件.py", line 26, in <module>
    for idx in range(len(file_list)):
TypeError: object of type 'generator' has no len()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-9 16:19:54 | 显示全部楼层    本楼为最佳答案   
#执行搜索
a = input("请输入程序名:")
if __name__=='__main__':
    exe_list = [file for file in search_files(a) if file.endswith('.exe')]
    print('--代号--|-------程序名------')
    print('\n'.join([f"    {i+1}    {f}" for i, f in enumerate(exe_list)]))
    print('---------------------------')
    code = input('选择你想要执行的程序代号:')  
    import os 
    os.system(f"start {exe_list[int(code)-1]}")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-9 16:40:46 | 显示全部楼层

感谢大佬!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-9 16:47:05 | 显示全部楼层
感谢各位大佬帮忙!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 15:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表