0

これは他の場所で説明されていると確信していますが、私にとって完全に意味のあるものは見つかりませんでした.

Python で os.walk() 関数を使用しようとしていますが、これは 3 タプルを返します。正しく使用する方法を理解しました (os.walk() の x、y、z について) が、3 タプルの内部構造についてはまだ混乱しています。これを理解するために完全に必要ではないかもしれませんが、私自身の正気のために私をユーモアにしてください.

os.walk のドキュメントによると、3 タプルの応答の形式は (rootdirname、サブディレクトリのリスト、ファイルのリスト) です。ただし、それは単一のディレクトリのデータのみを記述し、サブディレクトリのデータは記述しません。

私の質問は、オブジェクト全体の形式が実際に次の場合です。A) 3 項目のタプルのリスト (root1、subdirs1、files1)、(root2、subdirs2、files2)、...

また

B) 3 つの異なるリスト ((root1,root2)、(subdirs1、subdirs2)、(files1、files2)) のタプル。タプル マジックによって、すべての 1 が関連付けられ、すべての 2 が関連付けられます。 .

助けてくれてありがとう

編集: ジェネレーター オブジェクトに関するヒントを提供してくれた Peter DeGlopper に感謝します。

元の質問は、os.walk() が 3 タプルのリストを返すと仮定していたために発生しましたが、実際には、ループの反復ごとに単一の 3 タプルを動的に生成します。

4

1 に答える 1

0

ウォークしたディレクトリごとに、そのディレクトリへのパス、そのディレクトリ内のファイル、およびそのディレクトリ内のディレクトリのタプルを取得します。後の 2 つはシーケンスです (リストですが、それは問題ではありません)。次のように使用します。

for root, files, dirs in os.walk("/path/"):
    for filepath in files:
        filepath = os.path.join(root, filepath)
        # process file
    for dirpath in dirs:
        dirpath = os.path.join(root, dirpath)
        # process dir
于 2013-05-10T16:48:22.083 に答える