qaz1234 发表于 2021-8-9 13:46:09

搜索到的值怎么在前面添加序号

本帖最后由 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

wp231957 发表于 2021-8-9 13:55:14

存放在列表里?,

qaz1234 发表于 2021-8-9 13:57:47

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

wp231957 发表于 2021-8-9 13:55
存放在列表里?,

没有在列表里,是搜索本地.exe出来的路径,搜索是调用的everything-SDK

wp231957 发表于 2021-8-9 14:00:45

qaz1234 发表于 2021-8-9 13:57
没有在列表里,是搜索本地.exe出来的路径,搜索是调用的everything-SDK

你要操作everything的结果吗   基本上无法实现

qaz1234 发表于 2021-8-9 14:08:46

wp231957 发表于 2021-8-9 14:00
你要操作everything的结果吗   基本上无法实现

我是想操作我搜索出来的这三个路径,使这三个路径可以选择

wp231957 发表于 2021-8-9 14:17:41

qaz1234 发表于 2021-8-9 14:08
我是想操作我搜索出来的这三个路径,使这三个路径可以选择

你在啥里操作这三个路径   要是你自己的app 还可以考虑   要是别人的   基本就不用考虑

qaz1234 发表于 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)

2012277033 发表于 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))
    index = int(input("请输入序号以运行程序:"))
    os.system("start {}".format(file_list))

qaz1234 发表于 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):
    if file_list.endswith('.exe'): #判断名称的结尾是否是.exe
      print ("{}、{}".format(idx,file_list))
index = int(input("请输入序号以运行程序:"))
os.system("start {}".format(file_list))



报这个错:
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()

阿奇_o 发表于 2021-8-9 16:19:54

#执行搜索
a = input("请输入程序名:")
if __name__=='__main__':
    exe_list =
    print('--代号--|-------程序名------')
    print('\n'.join())
    print('---------------------------')
    code = input('选择你想要执行的程序代号:')
    import os
    os.system(f"start {exe_list}")

qaz1234 发表于 2021-8-9 16:40:46

阿奇_o 发表于 2021-8-9 16:19


感谢大佬!!!

qaz1234 发表于 2021-8-9 16:47:05

感谢各位大佬帮忙!!!
页: [1]
查看完整版本: 搜索到的值怎么在前面添加序号