如何在Python中迭代两层以上的子文件夹?

问题描述 投票:0回答:1

我想遍历一个包含多个“级别”子文件夹的目录(如果我使用了错误的术语,请原谅),请参阅以下列表作为示例:

$ tree folder/
folder/
├── lever1_1
│   └── level2_1
│       └── level3_1
│           ├── file1.txt
│           └── file2.txt
└── lever1_2
    └── level2_1
        └── level3_1

6 directories, 2 files

我想检查目录中是否有.txt文件,如果有,我想修改它们所在的目录(即本例中的level3_1)。这意味着如果我做了类似的事情,它会导致重复

for dirs, files in os.walk("/home/user/folder"):
    for file in files:
        if file.endswith(".txt"):
            # do something to the directory they are in

因为level3_1中有几个.txt文件,但我只想修改一次。

如果我使用

for dirs, files in os.walk("/home/user/folder")
我会收到错误“太多值无法解压(预期为 2)”,我理解这一点,但我无法使用一组固定的目录级别,因为它们在整个用例中可能会有所不同。

有人知道如何有效地做到这一点吗?

亲切的问候

python os.walk
1个回答
0
投票

鉴于此文件/目录结构:

$ tree folder/
folder/
├── lever1_1
│   └── level2_1
│       └── level3_1
│           ├── file1.txt
│           └── file2.txt
└── lever1_2
    └── level2_1
        └── level3_1

6 directories, 2 files

您需要什么:

import os

if __name__ == '__main__':
    for root, dirs, files in os.walk("./folder"):
        for file in files:
            if file.endswith(".txt"):
                print(file)
© www.soinside.com 2019 - 2024. All rights reserved.