7.3.3フォルダー/ファイル情報を再起的に取得する
構文walk関数
walk(top, topdown=True)
top :走査するフォルダーのパス
topdown :上位フォルダーから走査するか(Falseで下位フォルダーから走査)
構文walk関数
walk(top, topdown=True)
top :走査するフォルダーのパス
topdown :上位フォルダーから走査するか(Falseで下位フォルダーから走査)
>>> import os
>>>
>>> for path, dirs, files in os.walk('C:\\data\\selfpy\\chap07/doc'):
... print(path)
... print(dirs)
... print(files)
... print('--------------')
...
C:\data\selfpy\chap07/doc
['foo', 'hoge', 'piyo']
['z001.txt', 'z002.txt']
--------------
C:\data\selfpy\chap07/doc\foo
['bar']
['a001.log', 'f001.txt', 'f002.txt']
--------------
C:\data\selfpy\chap07/doc\foo\bar
[]
['b001.txt']
--------------
C:\data\selfpy\chap07/doc\hoge
[]
['h001.txt', 'h002.txt']
--------------
C:\data\selfpy\chap07/doc\piyo
[]
[]
--------------
>>
構文の top とか todownとかがわかってないですね。
os.walk関数を使用して、指定したディレクトリC:\data\selfpy\chap07/doc内のファイルとディレクトリを再帰的に取得します。- ループ内の
for文で、各ディレクトリを走査しています。 path変数には現在のディレクトリのパスが格納されます。最初の出力はルートディレクトリのパスであるC:\data\selfpy\chap07/docです。dirs変数には現在のディレクトリ内のサブディレクトリのリストが格納されます。2番目の出力はサブディレクトリのリスト['foo', 'hoge', 'piyo']です。files変数には現在のディレクトリ内のファイルのリストが格納されます。3番目の出力はファイルのリスト['z001.txt', 'z002.txt']です。- 各ディレクトリのパス、サブディレクトリのリスト、ファイルのリストが出力された後、区切り線
--------------が表示されます。 - このプロセスは、再帰的に各サブディレクトリに対して繰り返されます。各ディレクトリ内のサブディレクトリとファイルが順番に表示されます。
>>> import os
>>>
>>> for path, dirs, files in os.walk('C:\\data\\selfpy\\chap07'):
... #配下のファイルだけを列挙
... for f in files:
... #拡張子「.txt」のものだけを表示
... if f.endswith('.txt'):
... print(os.path.join(path, f))
...
C:\data\selfpy\chap07\sample.txt
C:\data\selfpy\chap07\child\dummy.txt
C:\data\selfpy\chap07\doc\z001.txt
C:\data\selfpy\chap07\doc\z002.txt
C:\data\selfpy\chap07\doc\foo\f001.txt
C:\data\selfpy\chap07\doc\foo\f002.txt
C:\data\selfpy\chap07\doc\foo\bar\b001.txt
C:\data\selfpy\chap07\doc\hoge\h001.txt
C:\data\selfpy\chap07\doc\hoge\h002.txt
>>>
os.walk関数を使用して、指定したディレクトリC:\data\selfpy\chap07内のファイルとディレクトリを再帰的に取得します。- 最初のループでは、
path変数には現在のディレクトリのパスが、dirs変数には現在のディレクトリ内のサブディレクトリのリストが、files変数には現在のディレクトリ内のファイルのリストが格納されます。 - 内側のループでは、各ファイルに対して処理を行います。
f.endswith('.txt')の条件により、拡張子が.txtのファイルのみを選択します。os.path.join(path, f)を使用して、ディレクトリのパスとファイル名を結合して表示します。- ループが完了すると、指定したディレクトリとそのサブディレクトリ内に存在する拡張子が
.txtのファイルのパスが表示されます。
このコードにより、指定したディレクトリとそのサブディレクトリ内にある拡張子が .txt のファイルのパスを再帰的に取得して表示することができます。
構文の top とか todownとかがわかってないですね。
コメント