0

また、ディレクトリ内のランダムなファイルを返す関数を書いています-ファイル名の部分文字列と一致できるようにしたいです。

def get_rand_file(folder, match=None):
    if match == None:
        return random.choice(os.listdir(folder))
    else:
        matching = []
        for s in os.listdir(folder):
            if match in s:
                matching.append(s)
        return random.choice(matching)

このコードは機能しますが、私はたくさんのファイルを扱っており、このコードには時間がかかります。リストの理解とマッピングを試してみましたが、機能しませんでした。助言がありますか?

4

1 に答える 1

2
def get_rand_file(folder, match=None):
   if match == None:
       return random.choice(os.listdir(folder))
   else:
       return random.choice([s for s in os.listdir(folder) if match in s])

リスト内包表記に関するドキュメント:

http://docs.python.org/tutorial/datastructures.html#list-comprehensions

于 2012-08-02T08:37:14.643 に答える