为了账号安全,请及时绑定邮箱和手机立即绑定

了解python中的变量赋值

了解python中的变量赋值

临摹微笑 2021-03-07 16:12:47
我是菜鸟,正在尝试了解Python。对于os.walk文档,它说它返回一个元组(dirpath,dirnames,filenames)只是理解,我试图像下面一样使用它import osfrom os.path import join, getsizefile=[]dir=[]xroot,dir,file = os.walk('C:\Python27\mycode')但这给了我这样的错误:xroot,dir,file = os.walk('C:\ Python27 \ mycode')ValueError:需要两个以上的值来解压我的问题是为什么我不能像上面那样分配它,而是让它成为循环的一部分(大多数示例使用它)?
查看完整描述

3 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

os.walk返回一个迭代器。通常认为要做的就是遍历它

for xroot, dir, file in os.walk('C:\Python27\mycode'):
    ...

但您也可以只使用xroot, dir, file = next(os.walk('C:\Python27\mycode'))单步执行


查看完整回答
反对 回复 2021-03-30
?
守着一只汪

TA贡献1872条经验 获得超4个赞

os.walk不返回root,dir,file。它返回一个生成器对象供程序员循环。很可能是因为给定路径可能包含子目录,文件等。


>>> import os

>>> xroot,dir,file = os.walk('/tmp/') #this is wrong.

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

ValueError: too many values to unpack

>>> os.walk('/tmp/')

<generator object walk at 0x109e5c820> #generator object returned, use it

>>> for xroot, dir, file in os.walk('/tmp/'):

...     print xroot, dir, file

... 

/tmp/ ['launched-IqEK']

/tmp/launch-IqbUEK [] ['foo']

/tmp/launch-ldsaxE [] ['bar']

>>> 


查看完整回答
反对 回复 2021-03-30
  • 3 回答
  • 0 关注
  • 169 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号