我确信这已在其他地方解释过,但我找不到任何对我来说完全合理的事情。
我正在尝试在python中使用os.walk()函数,它返回一个3元组。我现在明白了如何正确使用它(对于os.walk()中的x,y,z),但我仍然对3元组的内部结构感到困惑。可能不是完全有必要理解这一点,但请为了我自己的理智而幽默我。
根据os.walk的文档,3元组响应的形式是(rootdirname,子目录列表,文件列表)。但是,这只描述了单个目录的数据,而不是子目录'。
我的问题是,如果整个对象的形式实际上是: A)3项元组的列表(root1,subdirs1,files1),(root2,subdirs2,files2),...
或
B)3个不同列表的元组((root1,root2),(subdirs1,subdirs2),(files1,files2)),其中只有元组魔法,所有1都关联在一起,所有2s联系在一起。
感谢您的帮助
修改 感谢Peter DeGlopper关于发电机对象的提示。
最初的问题产生了,因为我假设os.walk()返回了一个3元组列表,但实际上它在循环的每次迭代中动态生成一个3元组。
答案 0 :(得分: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