Python 文件搜索程序不够快
Python file search program not fast enough
我编写了以下代码来搜索您计算机上的文件:
import os, sys
import win32api
x=raw_input("Enter file name: ")
drives = win32api.GetLogicalDriveStrings()
drives = drives.split('[=11=]0')[:-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()
您可能已经注意到该程序速度不够快。
那么谁能帮我制作一个更快、更高效的程序版本?
谢谢!
您无法对这个程序进行太多改进 - 任何静态文件搜索都必须执行此类操作。通过增加很多复杂性并使其并行,您可以通过一次遍历文件系统的不同部分并可能更早地启用 "lucky hit" 来使其更快地工作。
专为快速搜索文件系统而设计的应用程序和实用程序通常求助于为数据库中的所有文件系统内容编制索引 - 并且它们会在后台持续或在一天的固定时间继续这样做。所以,当有搜索时,他们只是对该数据库执行查询。
然而,此解决方案会使您的小程序的复杂性增加数倍 - 在这里写为答案太复杂了;
减少打印语句的数量应该会显着提高速度。如果您需要跟踪文件,则可以将结果写入日志文件。
我编写了以下代码来搜索您计算机上的文件:
import os, sys
import win32api
x=raw_input("Enter file name: ")
drives = win32api.GetLogicalDriveStrings()
drives = drives.split('[=11=]0')[:-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()
您可能已经注意到该程序速度不够快。
那么谁能帮我制作一个更快、更高效的程序版本?
谢谢!
您无法对这个程序进行太多改进 - 任何静态文件搜索都必须执行此类操作。通过增加很多复杂性并使其并行,您可以通过一次遍历文件系统的不同部分并可能更早地启用 "lucky hit" 来使其更快地工作。
专为快速搜索文件系统而设计的应用程序和实用程序通常求助于为数据库中的所有文件系统内容编制索引 - 并且它们会在后台持续或在一天的固定时间继续这样做。所以,当有搜索时,他们只是对该数据库执行查询。
然而,此解决方案会使您的小程序的复杂性增加数倍 - 在这里写为答案太复杂了;
减少打印语句的数量应该会显着提高速度。如果您需要跟踪文件,则可以将结果写入日志文件。