从子目录开始在Python中遍历子目录

时间:2017-10-09 09:21:46

标签: python

我有以下目录结构:

root
└── env
    ├── team_1
    │   ├── policies
    │   │   └── file.yaml
    │   └── roles
    └── team_2
        ├── policies
        └── roles

我需要阅读团队目录下的所有文件并合并它们以创建一个独特的文件

这是我的尝试:

env_path = os.path.join('root', env)

if os.path.exists(env_path):
     for team_dir in os.listdir(env_path):
         for root, dirs, files in os.walk(team_dir):
            print(root, dirs, files)

问题是os.walk在我通过team_dir时没有返回任何内容。我应该使用os.path.join(env_path, team_dir),但在那时它会返回我不想要的整棵树。你怎么能从os.walk已经是一个子目录的子目录中退出来?

1 个答案:

答案 0 :(得分:1)

使用os.path.join(env_path, team_dir)os.walk无法找到任何内容。

但是如果你不想要所有的层次结构,只需删除字符串的开头:

 for team_dir in os.listdir(env_path):
     for root, dirs, files in os.walk(os.path.join(env_path, team_dir)):
        for f in files+dirs:
            print(os.path.join(root,f)[len(env_path)+1:])  # strip start of path + separator