遍历目录以计数包含特定字符串的文件数量
我有一个文件夹,里面有好几个层级的子文件夹。所有的文件都是html文件,总共有大约500个。我想逐个查看这些文件,看看里面是否包含一个叫“sub_middle_1col”的部分。我在palewire.com找到了一个很不错的教程,并以此为基础进行尝试。现在我遇到两个问题:第一,当代码遇到子文件夹时,它把子文件夹当成文件,导致代码出错;第二,代码只查看主文件夹里的文件,而不去查看子文件夹里的文件。我可能通过添加一行代码解决了第一个问题(见下文),但我不知道怎么把我看到的其他解决方案(比如os.walk)整合到我的代码里,以解决第二个问题。有没有什么建议?非常感谢!
import os
path = "./Industries"
my_library = os.listdir(path)
out = open("out.txt", "w")
for page in my_library:
file = os.path.join(path, page)
if os.path.isfile(file) and file.endswith('.html'): #I ADDED THIS LINE
text = open(file, "r")
hit_count = 0
for line in text:
if 'sub_middle_1col' in line:
hit_count = hit_count + 1
print >> out, page + " => " + str(hit_count)
print page + " => " + str(hit_count)
text.close()
1 个回答
3
好吧,你可以试试:
import os
for root,dirs,files in os.walk(path):
for fname in files:
if fname.endswith('.html'):
fq = os.path.join(root, fname)
for line in open(fq):
if 'sub_middle_1col' in line:
...
使用find()或者正则表达式(re模块)来检查'sub_middle_1col'这个字符串,这样可能会让你的程序运行得更快...