1. ホーム
  2. パイソン

[解決済み】Pythonでディレクトリを再帰的に走査するためにos.walk()を使用する。

2022-04-12 03:23:28

質問

ルートディレクトリから他のディレクトリに移動し、同じものを印刷したい。

以下は私のコードです。

#!/usr/bin/python

import os
import fnmatch

for root, dir, files in os.walk("."):
        print root
        print ""
        for items in fnmatch.filter(files, "*"):
                print "..." + items
        print ""

そして、これが私のO/Pです。

.

...Python_Notes
...pypy.py
...pypy.py.save
...classdemo.py
....goutputstream-J9ZUXW
...latest.py
...pack.py
...classdemo.pyc
...Python_Notes~
...module-demo.py
...filetype.py

./packagedemo

...classdemo.py
...__init__.pyc
...__init__.py
...classdemo.pyc

上図 ../packagedemo はディレクトリです。

しかし、次のようにO/Pを印刷する必要があります。

A
---a.txt
---b.txt
---B
------c.out

上図 AB はディレクトリで、残りはファイルです。

解決方法は?

これで目的の結果を得ることができます

#!/usr/bin/python

import os

# traverse root directory, and list directories as dirs and files as files
for root, dirs, files in os.walk("."):
    path = root.split(os.sep)
    print((len(path) - 1) * '---', os.path.basename(root))
    for file in files:
        print(len(path) * '---', file)