0

我确信这已经在其他地方解释过,但我找不到任何对我来说完全有意义的东西。

我正在尝试在 python 中使用 os.walk() 函数,它返回一个 3 元组。我现在了解如何正确使用它(对于 os.walk() 中的 x、y、z),但我仍然对 3 元组的内部结构感到困惑。理解这一点可能不是完全必要的,但请为了我自己的理智而取笑我。

根据 os.walk 的文档,三元组响应的形式是(根目录名、子目录列表、文件列表)。但是,这仅描述了单个目录的数据,而不是子目录的数据。

我的问题是,如果整个对象的形式实际上是: A) 3 项元组列表 (root1,subdirs1,files1), (root2, subdirs2, files2), ...

或者

B) 3 个不同列表 ((root1,root2), (subdirs1, subdirs2), (files1, files2)) 的元组,其中仅通过元组魔术,所有 1 关联在一起,所有 2 关联在一起.

谢谢您的帮助

编辑: 感谢 Peter DeGlopper 关于生成器对象的提示。

产生最初的问题是因为我假设 os.walk() 返回了一个 3 元组列表,但实际上它在循环的每次迭代中动态生成一个 3 元组。

4

1 回答 1

0

对于遍历的每个目录,您将获得该目录的路径、该目录中的文件以及该目录中的目录的元组。后两个是序列(列表,但没关系)。你像这样使用它们:

for root, files, dirs in os.walk("/path/"):
    for filepath in files:
        filepath = os.path.join(root, filepath)
        # process file
    for dirpath in dirs:
        dirpath = os.path.join(root, dirpath)
        # process dir
于 2013-05-10T16:48:22.083 回答