尝试遍历目录和子目录我在以下代码中遇到错误。 在这里,我试图以递归方式调用构造函数。
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()
这次我检查了同步错误:/
答案 0 :(得分: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))