Python實現對文件夾內文本文件遞歸查找

 

平臺:Win7 64 bit,IDLE Python 3.4.0python

 

常常有這樣的需求:在一個文本文件裏查找特定字符串,這很好實現,用任何文本查看工具幾乎均可以作到。而有的時候,想查找一個文件夾下的全部文本文件(特定後綴),我就遇到了這樣的問題:想找到Blender的源代碼中關於SPH的實現代碼。因而寫了下面的簡單程序:工具

#!/usr/bin/env python3

import os

def Search(rootDir, suffixes, arg):   
    for lists in os.listdir(rootDir):       
        path = os.path.join(rootDir, lists)
        if os.path.isfile(path):
            if path.endswith(suffixes):
                try:
                    with open(path, encoding='utf_8') as fh:
                        lineNum = 0
                        for line in fh:
                            lineNum += 1
                            if arg in line:
                                print(lineNum, ':', path, '\n', line)
                        fh.close()
                except:
                    print('error: ', path, '\n')
        if os.path.isdir(path):
            Search(path, suffixes, arg)

Search(r'D:\blender-2.70', ('.c','.cpp','.h','.hpp'), 'SPH ')

程序雖小,但很實用,運行結果以下:spa

 

參考文獻code

  1. 官網,https://www.python.org/,文檔,https://docs.python.org/3/(IDLE help);
  2. Python絕對簡明教程,http://wiki.woodpecker.org.cn/moin/PyAbsolutelyZipManual
  3. 簡明Python教程,http://woodpecker.org.cn/abyteofpython_cn/chinese/
相關文章
相關標籤/搜索