2016-12-30 8 views
5

現在、キーワードでファイルを検索するコードがあります。見つかったファイルの数を表示する方法はありますか?コードが実行されているか、進行状況が示されていますか?私は検索する大きなディレクトリがあり、可能であれば進捗状況を見たいと思っています。私が現在持っているコードは、多くの情報や処理時間を示していません。ファイル数が見つかり、進捗状況が表示されます

import os 
import shutil 
import time 
import sys 

def update_progress_bar(): 
    print '\b.', 
    sys.stdout.flush() 

print 'Starting ', 
sys.stdout.flush() 

path = '//server/users/' 
keyword = 'monthly report' 

for root, dirs, files in os.walk(path): 
    for name in files: 
    if keyword in name.lower(): 
     time.sleep(0) 
     update_progress_bar() 

print ' Done!' 
+0

'print 'の代わりに' sys.stdout.write('。 ') '\ b。'、'を実行すると、最初の場所にスペースが印刷されることはありません。 – 2rs2ts

答えて

0

これはかなり簡単ですが、カウンタを保持しないのはなぜですか?

files_found = 0 
for root, dirs, files in os.walk(path): 
    for name in files: 
    if keyword in name.lower(): 
     files_found += 1 
     time.sleep(0) 
     update_progress_bar() 

print "Found {}".format(files_found) 

編集:あなたは進捗状況を計算したい場合は、あなたが反復処理されますどのように多くのファイルが最初に把握する必要があります。ネストされたリストの理解を使用する場合はos.walkによって放出された各トリプルからfilesのそれぞれをフラット化できます。

filenames = [name for file in [files for _, _, files in os.walk(path)]] 
num_files = float(len(filenames)) 

は今、各ステップで、あなたは、ファイルの数で割った現在のステップ数であるものとして進行状況を記述することができます。言い換えれば、ステップ番号を取得するには enumerateを使用して:

files_found = 0 
for step, name in enumerate(filenames): 
    progress = step/num_files 
    print "{}% complete".format(progress * 100) 
    if keyword in name.lower(): 
     files_found += 1 
     time.sleep(0) 
     update_progress_bar() 

あなたは別の問題だ進展を印刷する方法で、より創造的な取得したい場合。

+0

方法はありますか完了の割合を表示するには? –

+0

これはちょっと疑問ですが、私はそれに答えることができます、私には秒をください。 – 2rs2ts

関連する問題