2016-08-31 4 views
0

Pythonを使用して、特定のファイル名を再帰的にディレクトリツリーで検索したいとします。ディレクトリツリー内でPythonが単一のファイル名を再帰的に検索します。戻り値が見つからない場合はfalseを返します

**見つかった場合は何も印刷しません。

**見つからない場合は、見つからなかったというメッセージが表示されます。あなたがファイルを見つけたときに、ここで

=====は、私がこれまで持っているものはエラーではありませんが、何のファイルが見つからないメッセージのいずれか=====

import os 
rootDir = 'G:\\some_top_directory\\' 
file_name = 'fileOFinterest.txt' 
def find_file(file_name,rootDir): 
    for dirpath, dirnames, filenames in os.walk(rootDir): 
     if file_name in filenames: 
      print 'found' 

答えて

1

早期復帰。あなたのos.walk()ループは、あなたが知っている完了した後にそのようには、ファイルが見つかりませんでした:

import os 

def find_file(name, root): 
    for _, _, filenames in os.walk(root): 
     if name in filenames: 
      return # found the file, exit early 
    print 'Not found' 

rootDir = 'G:\\some_top_directory\\' 
file_name = 'fileOFinterest.txt' 
find_file(file_name, rootDir) 

私は反復ごとにos.walk()によって返さDIRPATHとディレクトリの両方の値について_を使用しました。ループはそうでなければこれらを無視し、_はこれをリーダに知らせる。

0
if not any(file_name in filenames 
      for dirpath, dirnames, filenames in os.walk(rootDir)): 
    print file_name, 'not found' 
0

あなたがrecursiveフラグで**を使用することができますPython3.5 +を使用している場合:(最初のファイルが見つかった後、検索が続く)。これは、複数のファイルを見つけるだろう

import glob 
rootDir = 'G:\\some_top_directory\\' 
file_name = 'fileOFinterest.txt' 
found_files = glob.glob("{}**\\{}".format(rootDir, file_name), recursive=True) 
if not found_files: 
    # do whatever you need 
    pass 
else: 
    print('found') 
+0

、とあなたはdidnの見つからなかった場合の実際の印刷要件を処理しません。 –

+0

@MartijnPieters、 'print'部分を追加しました:)ありがとう! – Dekel

関連する問題