簡體   English   中英

在文件夾和子文件夾中Py搜索文件

[英]Py Search files in Folder and Subfolders

我正在嘗試在目錄樹中查找文件列表。 本質上,我提供了一個文本文件,其中包含要搜索的所有術語(〜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()

關於我弄錯了什么的任何想法嗎?

全部或部分問題可能是除非您使用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()

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM