0

试图遍历目录和子目录我在以下代码中遇到错误。在这里,我试图递归调用构造函数。

import os
from os.path import isfile, join

class CovPopulate:
    fileList = list()
    def __init__(self,path):
        self.path = path
        for f in os.listdir(self.path):
            if isfile(join(self.path,f)):
                if f.endswith(".txt"):
                    fileList.append(join(self.path,f))
            else:
                CovPopulate(f)

追溯 : -

 CovPopulate(r"C:\temp")
File "<pyshell#1>", line 1, in <module>
CovPopulate(r"C:\temp")


 File "C:/fuzzingresults/CovPopulate.py", line 11, in __init__
      fileList.append(join(self.path,f))
       NameError: global name 'fileList' is not defined

但是,我已经定义了 fileList = list()

这次我检查了同步错误:/

4

1 回答 1

0

filelist在类的命名空间中定义CovPopulate。我建议通过self. 此外,当f不是文件也不是目录(符号链接,管道,...)时我遇到了问题,所以我添加了isdir检查。最后,只有当我将绝对路径传递给CovPopulate. 我的__init__功能如下所示:

def __init__(self,path):
    self.path = path
    for f in os.listdir(self.path):
        if isfile(join(self.path,f)):
            if f.endswith(".txt"):
                self.fileList.append(join(self.path,f))
        elif isdir(join(self.path,f)):
            CovPopulate(join(self.path,f))
于 2013-09-13T10:29:37.273 回答