2017-12-20 14 views
0

ハッシュリストに対してハッシュをチェックし、一致または不一致を返そうとするコードが少々あります。現在、以下のコードは、(tkinterを使ってハッシュファイルを選択した後で)各行をチェックして出力しています。これをユーザーの単一の出力に減らすにはどうすればよいですか?文字列がファイル内にあるかどうかを確認します

(テストファイルで2つのハッシュの例で)出力の例:データベースで見つから

HASH!

を見つけていない

ハッシュは、私は1つの結果だけを表示したい、どちらかのハッシュが見つかりました、あるいは全くハッシュが見つかりませんでした。

user_hash = raw_input('What is the hash you would like to check?: ') 
    toplevel = Tk() 
    toplevel.withdraw() 
    filename = tkFileDialog.askopenfilename()   
    with open(filename) as f: 
     found=False 
     for line in f: 
      if user_hash in line:  
       print('HASH FOUND IN DATABASE!') 
      else: 
       print('Hash not found') 
+0

ことパスしてください、あなたは戻ってほしい、またはそれは重要ですか? – paisanco

+0

Trueの場合、ハッシュが見つかった場合は、「ハッシュ検出」を1回だけ印刷します。見つからない場合は、「ハッシュが見つかりません」を1回だけ印刷します。今、リスト内の各行について表示しています。これはハッシュファイルでは現実的ではありません。 – deuer

答えて

0

一致するハッシュが発見されるとすぐに、あなたが行っているように、単にファイル内の行をループから抜け出す場合:ファイルに複数のエントリがある場合

for line in f: 
    if user_hash in line:  
     print('HASH FOUND IN DATABASE!') 
     break 
    else: 
     print('Hash not found') 
+0

それはプロセスを停止しますが、一致するハッシュが何千もの行をダウンしている場合は、実際には最高のものではありません。 「検索して中断する」前にディスプレイを隠す方法はありますか – deuer

+0

メモリの使用が懸念される場合は、https://stackoverflow.com/questions/4940032/how-to-search-for-a-string-inを参照してください。 mmapを使ったトリック用の-text-files検索中にディスプレイをフリーズすることが懸念される場合は、おそらくディスプレイから別のスレッドで検索を実行できます。 – paisanco

+0

ハッシュがファイル内にあれば、そのコードをユーザに効率的に表示させたいだけです。それを言っていない場合。いずれかの応答が1行で表示されます。多分、ファイル全体をバッファに読み込んでバッファをチェックする必要があります。 – deuer

関連する問題