Skip to content
This repository was archived by the owner on Jan 8, 2019. It is now read-only.

Latest commit

 

History

History
40 lines (30 loc) · 1.41 KB

File metadata and controls

40 lines (30 loc) · 1.41 KB

概要

前回までに作成してきた関数 search に以下の要件を追加します。

要件

  • 入力データと出力データは前回と同じです。
  • ただし、ディレクトリ内にディレクトリがある場合にその中のファイルも検索できるようにします。

想定結果

search('notes/', '雪')

上記のように notes/ を表示すると以下のように 芥川龍之介 ディレクトリの中も検索表示されることを想定しています。

notes/冬の庭.txt
notes/雨ニモマケズ.txt
notes/雪の日.txt
notes/芥川龍之介/秋.txt
notes/芥川龍之介/雪.txt

ヒント

  • ディレクトリを再帰的に検索するには os.walk 関数を使います。
    • os.walk 関数は os.listdirとは違いジェネレータというオブジェクトを返します。
      • 同じようにfor文に与えて使えますが、それぞれのループで (パス, ディレクトリ一覧, ファイル一覧) が返却されます。
      • 以下の様に使います。
import os
for path, dirnames, filenames in os.walk('notes/'):
    print(path, dirnames, filenames)

# notes ['芥川龍之介'] ['丘.txt', '冬の庭.txt', '夏.txt', '夏の町.txt', '雨ニモマケズ.txt', '雪の日.txt']
# notes/芥川龍之介 [] ['悪魔.txt', '秋.txt', '雪.txt']