具体的な例
サブディレクトリ (笑) を含むディレクトリを走査し、rmvb、avi、pmp というサフィックスを持つすべてのファイルを見つける必要があります。 (なんと?! 何をしているのですか? これは私のプライバシーです~~)
コードをコピー コードは次のとおりです:
import os
def anyTrue(predicate, sequence):
return True in map(predicate, sequence)
def filterFiles(folder, exts):
for fileName os.listdir(フォルダー):
if os.path.isdir(フォルダー + '/' + ファイル名):
filterFiles(フォルダー + '/' + ファイル名、拡張子)
elif anyTrue(ファイル名. openswith, exts ):
print fileName
exts = ['.rmvb', '.avi', '.pmp']
filterFiles('/media/Personal/Movie', exts)
出力結果
何が良いのか見てみましょう:
[66影视www.66ys.cn] Lost Season 4 04.rmvb
[Lost.S04E00]。 .rmvb
[ロスト シーズン 4][エピソード 02][中国語字幕].rmvb
《ロスト シーズン 4》エピソード 05[中国語字幕].rmvb
《ロスト》ロスト シーズン 4 エピソード 06 [中国語字幕] ].rmvb
ロスト シーズン 4 エピソード 07 [中国語字幕].rmvb
ゴッドセンド シーズン 2 01.rmvb
ゴッドセンド シーズン 2 02.rmvb
ゴッドセンド シーズン 2 03.rmvb
ゴッドセンド シーズン 2 04.rmvb
ゴッドセンド シーズン 2 05.rmvb
映画テレビ帝国 (bbs.cnxp.com).ビューティフル マインド.A .ビューティフル.マインド.2001.CD1.rmvb
( ... 多すぎます、すべてエクスポートしないでください~~)
Extensions
CookBook は、文字列をフィルタリングするために次の itertools.imap を提供します。 imap と map の違いは、imap は反復オブジェクトを返すのに対し、map はリスト オブジェクトを返すことです。コードは次のとおりです。
import itertools
def anyTrue(predicate, sequence):
return True in itertools.imap(predicate, sequence)
def endsWith(s, *endings):
return anyTrue (s.endswith,endings)
imap は以下と同等です:
def imap(function, *iterables):
iterables = map(iter, iterables)
while True:
args = [ i.next() for i in iterables]
関数が None の場合:
yield tuple(args)
else:
yield function(*args)