0

I wrote the following code for searching a file on your computer:

import os, sys
import win32api

x=raw_input("Enter file name: ")

drives = win32api.GetLogicalDriveStrings()
drives = drives.split('\000')[:-1]
for drive in drives:
    for folderName, subfolders, filenames in os.walk(drive):
        for filename in filenames:
            if x.upper() in filename:
                print"FILE FOUND!"
                print('FILE INSIDE ' + folderName + ': '+ filename)
            elif x.lower() in filename:
                print"FILE FOUND!"
                print('FILE INSIDE ' + folderName + ': '+ filename)
            elif x.capitalize() in filename:
                print"FILE FOUND!"
                print('FILE INSIDE ' + folderName +': '+ filename)
a=raw_input("Press any key to exit.")
sys.exit()

As you may have noticed this program is not fast enough.

So could anyone help me make a faster and more efficient version of this program?

Thanks!

4

2 回答 2

1

你不能对这个程序进行太多改进——任何静态文件搜索都必须做这种事情。通过增加大量复杂性并使其并行化,您可以通过一次遍历文件系统的不同部分来使其更快地工作,并可能更早地启用“幸运命中”。

为快速搜索文件系统而设计的应用程序和实用程序通常诉诸于对数据库中的所有文件系统内容进行索引,并且它们要么在后台连续进行,要么在一天中的固定时间进行。因此,当有搜索时,他们只是对该数据库执行查询。

然而,这个解决方案会多次增加你的小程序的复杂性——而且在这里写作为答案太复杂了;

于 2016-07-19T14:26:27.560 回答
1

减少打印语句的数量应该会显着提高速度。如果您需要跟踪文件,则可以将结果写入日志文件。

于 2016-07-21T13:31:46.820 回答