ディレクトリをたどり、そのディレクトリ内の特定の拡張子で終わるすべてのファイルを取得し、そのファイルをリストに書き込もうとしています。これは、関数がその仕事を終えた後に返されるはずのリストです。
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
私はこれを1時間以上見つめてきましたが、今では自分のスクリプトに実質的に盲目になっているのではないかと心配しています:<私はdangリストを返すことができないか、返す仕組みを誤解しています-しかし、それはからリストを渡す必要があります問題なく新しい変数に一致しますよね?