遍历目录以计数包含特定字符串的文件数量

0 投票
1 回答
1162 浏览
提问于 2025-04-16 11:38

我有一个文件夹,里面有好几个层级的子文件夹。所有的文件都是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'这个字符串,这样可能会让你的程序运行得更快...

撰写回答