0

コンピューター上のファイルを検索するための次のコードを作成しました。

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()

お気づきかもしれませんが、このプログラムは十分に高速ではありません。

では、このプログラムのより高速で効率的なバージョンを作成するのを手伝ってくれる人はいますか?

ありがとう!

4

2 に答える 2

1

このプログラムを大幅に拡張することはできません。静的ファイル検索では、そのようなことを行う必要があります。多くの複雑さを追加して並列化することで、ファイル システムのさまざまな部分を一度に調べて、「ラッキー ヒット」を早期に有効にすることで、より高速に動作させることができます。

ファイル システムの高速検索用に設計されたアプリケーションとユーティリティは、通常、データベース内のすべてのファイル システム コンテンツのインデックス作成に頼っています。これらのアプリケーションは、バックグラウンドで継続的に、または 1 日の決まった時間にインデックスを作成し続けます。したがって、検索がある場合、そのデータベースに対してクエリを実行するだけです。

ただし、この解決策は小さなプログラムの複雑さを数倍に増やします。答えとしてここに書くには複雑すぎます。

于 2016-07-19T14:26:27.560 に答える