[英]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.