Pythonでトップレベルのディレクトリのみをリストするにはどうすればいいですか? 質問する

Pythonでトップレベルのディレクトリのみをリストするにはどうすればいいですか? 質問する

あるフォルダ内のディレクトリのみを一覧表示できるようにしたいです。つまり、ファイル名を一覧表示したり、追加のサブフォルダを表示したりしたくないということです。

例が役立つかどうか見てみましょう。現在のディレクトリには次のものがあります:

>>> os.listdir(os.getcwd())
['cx_Oracle-doc', 'DLLs', 'Doc', 'include', 'Lib', 'libs', 'LICENSE.txt', 'mod_p
ython-wininst.log', 'NEWS.txt', 'pymssql-wininst.log', 'python.exe', 'pythonw.ex
e', 'README.txt', 'Removemod_python.exe', 'Removepymssql.exe', 'Scripts', 'tcl',
 'Tools', 'w9xpopen.exe']

ただし、ファイル名はリストに表示したくありません。\Lib\curses などのサブフォルダーも表示したくありません。基本的に、私が望むのは、次のとおりです。

>>> for root, dirnames, filenames in os.walk('.'):
...     print dirnames
...     break
...
['cx_Oracle-doc', 'DLLs', 'Doc', 'include', 'Lib', 'libs', 'Scripts', 'tcl', 'Tools']

しかし、同じ結果を達成するより簡単な方法があるかどうか疑問に思っています。トップレベルを返すためだけに os.walk を使用するのは非効率的/やりすぎであるという印象を受けます。

ベストアンサー1

os.ウォーク

使用os.walknextアイテム機能:

next(os.walk('.'))[1]

のためにPython <=2.5使用:

os.walk('.').next()[1]

仕組み

os.walkはジェネレータであり、呼び出すとnext最初の結果が 3 つのタプル (dirpath、dirnames、filenames) の形式で取得されます。したがって、[1]インデックスはそのタプルからのみ返されますdirnames

おすすめ記事