Py搜索文件夹和子文件夹中的文件

时间:2012-03-14 16:58:47

标签: python file search directory

我试图找到目录树中的文件列表。本质上,我提供了一个文本文件,其中包含我要搜索的所有术语(~500),并在目录和子目录中查找它们。但是,我遇到了问题 - 我相信 - 代码在不搜索所有文件夹的情况下过早地结束了这些步骤。

我使用的代码是(pattern是文本文件的名称):

import os

def locateA(pattern, root):
    file  = open(pattern, 'r')
    for path, dirs, files in os.walk(root):
        for word in files:
            for line in file:
                if line.strip() in word:
                    print os.path.join(path, word), line.strip()

关于我误解的地方的任何想法?

2 个答案:

答案 0 :(得分:1)

全部或部分问题可能是您只能迭代一次文件,除非您使用file.seek()重置文件中的当前位置。

确保在尝试再次循环之前回到文件的开头:

import os

def locateA(pattern, root):
    file  = open(pattern, 'r')
    for path, dirs, files in os.walk(root):
        for word in files:
            file.seek(0)             # this line is new
            for line in file:
                if line.strip() in word:
                    print os.path.join(path, word), line.strip()

答案 1 :(得分:0)

for line in file第一次使用file中的行,然后每次都为空。

试试这个,修复了这个和其他一些问题:

import os

def locateA(pattern, root):
    patterns = open(pattern, 'r').readlines() # patterns is now an array, no need to reread every time.
    for path, dirs, files in os.walk(root):
        for filename in files:
            for pattern in patterns:
                if pattern.strip() in filename:
                    print os.path.join(path, filename), pattern.strip()