我正在尝试遍历一个目录,检索该目录中以某个扩展名结尾的所有文件,然后将该文件写入一个列表。这个列表应该在函数完成其工作后返回。
def grabFiles(source,ext):
import fnmatch
import os
matches = [] #tmp var which is used to return the files matching the search mask.
for root, dirnames, filenames in os.walk(source): #for each folder & subfolder do:
for filename in fnmatch.filter(filenames, ext): #and for each file found like that do:
matches.append(os.path.join(root, filename))#append the file name&directory to the "matches" variable.
return(matches) #return the content of matches
现在,当我使用以下命令运行它时:
ext=[".caf", ".lmg", ".chr", ".cdf", ".dds", ".tif", ".mtl", ".cgf", ".cga"]
for filetype in ext:
files= nPy.grabFiles("D:\\01_SVN\\01_DE\\trunk\\Game",filetype)
print files
我相信它应该返回一个列表,其中包含我的 ext 列表中每个扩展名的文件,对吗?相反,它为 ext 列表中的每个项目返回一个 [ ]。
如果我在不使用定义的情况下触发这个东西,它就可以正常工作:/
import fnmatch
import os
source ="D:\\01_SVN\\01_DE\\trunk\\Game"
extension = ["*.mtl","*.tif","*.chr"]
matches = []
for filetype in extension:
for root, dirnames, filenames in os.walk("%s" % (source)):
for filename in fnmatch.filter(filenames, "%s" % (filetype)):
matches.append(os.path.join(root, filename))
print matches
我已经盯着这个看了一个多小时,恐怕我现在几乎对自己的剧本视而不见:<我要么无法返回一个 dang 列表,要么我误解了返回的工作原理 - 但它应该从匹配一个新的变量没有问题,不是吗?