Pythonでファイル名に特定の文字列が含まれるものをフォルダ名とセットで抽出。
import os #dir以下のフォルダと特定の文字列(Move,.cs)を含むファイルをディクショナリにして返す #key:フォルダ名、value:ファイル名のリスト def dirfiles(dir): dfdict={} for d,s,f in os.walk(dir): #フォルダdにあるファイルでファイル名に「Move」と「.cs」を含むファイル flst=['\t'+fname+'\n' for fname in f if 'Move' in fname and '.cs' in fname] if 0<len(flst): dfdict['{}'.format(d+'\n')]=flst return dfdict #dicの中身をfileに書き出す def writefile(file,dic): with open(file, mode='w') as wf: for k in dic: wf.write(k) for fn in dic[k]: wf.write(fn) dfdict={} dnames = [fname for fname in os.listdir() if os.path.isdir(fname)]#フォルダ名 for dname in dnames: #.values()でlistのlistが返ってくる。sumでリストを連結 dfdict[dname+'\n'] = sum(dirfiles(dname).values(),[]) if 0==len(dfdict[dname+'\n']): dfdict.pop(dname+'\n') writefile('move1.txt', dfdict)#直下のディレクトリとそのディレクトリ下にあるファイル名 writefile('move2.txt', dirfiles('./'))#各ディレクトリとそのディレクトリ下にあるファイル名
引き継いだソースコードで動作が記述されたファイル(名称に"Move"を含む)を一覧にしたかったので。2000個以上出てきた。私にどうしろと言うのですか…。
※sumはリストの連結にも使える doc.code161.com