Python:<class 'generator'> 如何在我的代码中转换为元组?
Python: How does <class 'generator'> convert to a tuple in my code?
正在研究os.walk()方法
我能找到的所有示例都将用法显示为:
for root, dirs, files in os.walk(trackeddir):
for name in files:
print(os.path.join(root, name))
for name in dirs:
print(os.path.join(root, name))
...
但是,当我尝试:root, dirs, files = os.walk(trackeddir)
时,出现异常:“要解压的值太多(预计 3 个)”
我尝试将 os.walk() 的输出放入一个变量中,并在调试期间查看该变量中存储的内容,但我看不到任何“root”、“files”或“dirs” “
我希望看到一个元组,但相反,我看到了 'generator'
的一个实例
我是一个相对“还行”的 Java 开发人员,这种在运行时处理数据的新方式确实令人困惑。任何帮助我解决问题的人都将不胜感激!
这是因为 os.walk
是一个生成器。当你迭代一个生成器时,它会产生下一个元素,直到没有元素为止。注意,可以在变量中定义生成器,然后不用循环获取下一组元素:
g = os.walk(tracckeddir)
r, d, f = next(g)
到return将生成的整个元素集,你可以应用list()
:
list(os.walk(trackeddir))
正在研究os.walk()方法
我能找到的所有示例都将用法显示为:
for root, dirs, files in os.walk(trackeddir):
for name in files:
print(os.path.join(root, name))
for name in dirs:
print(os.path.join(root, name))
...
但是,当我尝试:root, dirs, files = os.walk(trackeddir)
时,出现异常:“要解压的值太多(预计 3 个)”
我尝试将 os.walk() 的输出放入一个变量中,并在调试期间查看该变量中存储的内容,但我看不到任何“root”、“files”或“dirs” “ 我希望看到一个元组,但相反,我看到了 'generator'
的一个实例我是一个相对“还行”的 Java 开发人员,这种在运行时处理数据的新方式确实令人困惑。任何帮助我解决问题的人都将不胜感激!
这是因为 os.walk
是一个生成器。当你迭代一个生成器时,它会产生下一个元素,直到没有元素为止。注意,可以在变量中定义生成器,然后不用循环获取下一组元素:
g = os.walk(tracckeddir)
r, d, f = next(g)
到return将生成的整个元素集,你可以应用list()
:
list(os.walk(trackeddir))