微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python:<class 'generator'> 如何在我的代码中转换为元组?

如何解决Python:<class 'generator'> 如何在我的代码中转换为元组?

我正在研究 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,files = os.walk(trackeddir) 时,出现异常:“解包的值太多(预期为 3)”

我尝试将 os.walk() 的输出放入一个变量中,并在调试期间查看该变量中存储的内容,但我无法看到任何“根”、“文件”或“目录” 我希望看到一个元组,但相反,我看到了一个 'generator' 实例

我是一个相对“OK”的 Java 开发人员,这种在运行时处理数据的新风格确实令人困惑。任何试图帮助我解决它的帮助将不胜感激!

解决方法

这是因为 os.walk 是一个生成器。当您迭代生成器时,它将产生下一个元素,直到没有元素剩余。请注意,您可以在变量中定义生成器,然后无需循环即可获取下一组元素:

g = os.walk(tracckeddir)
r,d,f = next(g)

要返回将生成的整个元素集,您可以应用list()

list(os.walk(trackeddir))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。