我试图找到目录树中的文件列表。本质上,我提供了一个文本文件,其中包含我要搜索的所有术语(~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()
关于我误解的地方的任何想法?
答案 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()