首页 > 解决方案 > 解析子文件夹中的文件

问题描述

我必须解析位于不同子文件夹中的所有文本文件。主文件夹是“数据”。在这里面,有很多子文件夹。我必须解析这些子文件夹中的所有文件并执行一些操作。我遇到了一个代码,但它并没有真正起作用。

import glob
import os

dir="D:\\College\\Data"
file_write_in_results = open("D:\\result\\test_all_files.txt","w", encoding="utf8") # file in which we will write the desired results
subdirs = [x[0] for x in os.walk(dir)]                                                                            
for subdir in subdirs:                                                                                            
    files = next(os.walk(subdir))[2]                                                                            
    if (len(files) > 0):
        for filename in files:            
        #for filename in glob.glob('*.txt'):
            with open(filename,  encoding="utf8") as f:
                for line in f:
                    if "signed by" in line:
                         file_write_in_results.write(filename)
                         file_write_in_results.write('\n')
file_write_in_results.close() 

标签: pythonpython-3.x

解决方案


您不需要遍历 dirs,因为它们也将在root变量中提供,仅files需要在内部循环中循环,如下所示:

import os

dir="D:\\College\\Data"
for root, dirs, files in os.walk(dir):
    for file in files:
        with open(os.path.join(root, file), encoding="utf8",mode="r") as f:
            pass
            #your file parsing logic goes here

请务必使用正确的encodingmodemode='rb'会更安全,您也可以将其全部包装在 atry except中以处理有问题的文件,以便在遇到此类文件时解析过程不会停止。


推荐阅读