2

ディレクトリ内の各ファイルから特定のスクリプトを含む行を見つけるために、Python スクリプトを作成しました。これらのファイルがあるディレクトリでこのスクリプトを実行すると、正常に動作します。

#!/usr/bin/env python
import os

def searchthis(location, searchterm):
    for fname in os.listdir(location):
        fullpath = os.path.join(location, fname)
        for line in file(fullpath):
            if searchterm in line:
                print line



searchthis(os.getcwd(), "mystring")

os.walkこれを実行して、すべてのディレクトリとサブディレクトリに存在する各ファイルを再帰的に検索する方法はありますか?

4

2 に答える 2

3

次のような単純なイテレータを使用できます。

def all_files(dir):
    for root, dirs, files in os.walk(os.path.abspath(dir)):
        for f in files:
            yield os.path.join(root, f)

例えば:

 for path in all_files(os.getcwd()):
     with open(path) as f:
         for n, line in enumerate(f, 1):
             if term in line:
                 print path, n
于 2012-08-23T08:34:12.323 に答える
2
#!/usr/bin/env python

import os

def searchthis(location, searchterm):
   for dir_path, dirs, file_names in os.walk(location):
      for file_name in file_names:
         fullpath = os.path.join(dir_path, file_name)
         for line in file(fullpath):
            if searchterm in line:
                print line

searchthis(os.getcwd(), "mystring")
于 2012-08-23T08:33:49.220 に答える