ホームページ >バックエンド開発 >Python チュートリアル >Python でのファイル トラバーサルの 2 つの方法

Python でのファイル トラバーサルの 2 つの方法

WBOY
WBOYオリジナル
2016-06-16 08:43:471204ブラウズ

Python でのファイル トラバースについては、おそらく 2 つの方法があり、1 つはより便利な os.walk() で、もう 1 つは os.listdir() を使用して再帰的にトラバースする方法です。

方法 1: os.walk を使用する

os.walk は、ファイル ツリー全体を上から下、または下から上に走査し、3 つの要素 (dirpath、dirnames、filenames) を含むタプルを返すことができます。os.walk() が返すことに注意してください。ジェネレーターなので、呼び出すときに for ループに配置する必要があります。

コードをコピー コードは次のとおりです:

import os
def walk_dir(dirname):
for root,dirs 、os.walk(dirname) のファイル:
for f in files:
yield os.path.join(root, f)



方法 2: os.listdir() を使用する

このメソッドも比較的単純で、ディレクトリをリストし、それがフォルダーであるかどうかを判断し、フォルダーである場合は、再帰的に呼び出されます。

コードをコピー コードは次のとおりです:

import os
def walk_dir2(dirname):
for d in os .listdir(dirname):
path = os.path.join(dirname, d)
if os.path.isdir(path):
#note 再帰 in for...in。 ..
for f in walk_dir2(path):
yield f
else:
yield path

関数で yield が使用されているため、ここで言及する価値があります。これはジェネレーターとみなされ、再帰的に呼び出される場合は for ループ内に配置する必要があります。そうしないと、関数は実際には実行されません。最新の Python 3.3 では、yield from 構文が導入されており、上記の問題を解決できます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。