根据python3docsos.walk
返回一个3元组。但是,这不起作用:
root, dirs, files = os.walk('path')
这也不是:
^{pr2}$它总是产生:
ValueError: not enough values to unpack (expected 3, got 1)
我在for循环中找到了os.walk
的所有示例:
for root, dirs, files in os.walk('path'):
为什么?这里到底要迭代什么?root
是一个字符串,dirs
和{dirs
和files
上重复:
for root, dirs, files in os.walk('path'):
for name in files:
print(name)
for name in dirs:
print(name)
内部for循环对我来说是有意义的,但我不明白外部for循环的用途。在
为什么当os.walk
嵌入for循环中时,对3元组的赋值会起作用,但是没有for循环就不行了?在
在手术室步行返回一个generator不是元组! 如果要从生成器输出中查找值,请将其转换为列表:
os.walk
不返回一个3元组,它生成多个3元组。来自the docs:有关生成的工作原理,请参见What does the "yield" keyword do?(可以忽略OP给出的示例代码)。技术上,
os.walk
返回生成3元组的生成器。在外部
for
循环在3元组上迭代。你可能会被同一步骤中发生的解包弄糊涂了。所以说清楚实际上与
^{pr2}$相关问题 更多 >
编程相关推荐