首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python子文件夹列表

Python子文件夹列表
EN

Stack Overflow用户
提问于 2012-05-21 12:23:54
回答 2查看 1.2K关注 0票数 1

我有一个主目录,名为Forfun。在这个目录中,有7-8个子目录,如Test1Test2Test3等.注意,在中也有一些文件不是子目录.例如,.txt文件位于与Test1、Test2子目录相同级别的Forfun中。

每个TestX子目录被进一步划分为3个子目录,即:inputsresultsparameters

我希望能够列出一个特定文件夹的所有实例,比如inputs

代码应该递归地遍历整个Forfun目录,并列出它找到的所有输入、结果目录。

我试着像这样使用os.listdir

代码语言:javascript
复制
path = '/myfiles/Forfun'
folders = [f for f in os.listdir(path) if f.endswith('inputs')]
folders 

但这会给我一个空的列表。希望我能把问题解释清楚,谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-21 12:30:17

os.listdir()列出了提供目录中的所有文件和目录。正如您所经历的,它不执行递归。它停留在最初提供的目录的级别上。

为了递归地遍历目录树并遍历特定目录级别下的所有文件和目录,您应该使用os.walk()

代码语言:javascript
复制
import os

def listdirs(suffix):
    for dirname, dirnames, filenames in os.walk('.'):
        for subdirname in dirnames:
            subdirpath = os.path.join(dirname, subdirname)
            if subdirpath.endswith(suffix):
                yield subdirpath


if __name__ == "__main__":
    for d in listdirs('inputs'):
        print d

我已经设置了和你建议的目录结构相同的目录结构。这是上面代码的输出:

代码语言:javascript
复制
$ python test.py 
./Test1/inputs
./Test2/inputs
票数 3
EN

Stack Overflow用户

发布于 2012-05-21 12:37:17

要准确地说,Jan-Philip的解决方案是:

代码语言:javascript
复制
>>> import os
>>> for root, dirs, files in os.walk(path):
    if 'inputs' in dirs:
        print os.path.join(root, 'inputs')

它将列出所有出现的inputs子文件夹。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10685211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档