我希望能够仅列出某个文件夹中的目录。这意味着我不想列出文件名,也不需要额外的子文件夹。
让我们看看一个例子是否有帮助。在当前目录中,我们有:
>>> 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 来返回顶层是低效/太多的。
使用 os.path.isdir() 过滤结果(并使用 os.path.join() 获取真实路径):
>>> [ name for name in os.listdir(thedir) if os.path.isdir(os.path.join(thedir, name)) ] ['ctypes', 'distutils', 'encodings', 'lib-tk', 'config', 'idlelib', 'xml', 'bsddb', 'hotshot', 'logging', 'doc', 'test', 'compiler', 'curses', 'site-packages', 'email', 'sqlite3', 'lib-dynload', 'wsgiref', 'plat-linux2', 'plat-mac']