Python值解包错误

dam*_*mon 0 python django

我正在构建一个使用Django的每用户文件浏览/上传应用程序,当我运行此功能时


def walkdeep(request, path):
    path, dirs, files = walktoo('/home/damon/walktemp/%s' % path)
    return render_to_response('walk.html', {
        'path' : path[0],
        'dirs' : path[1],
        'files' : path[2],
    }, context_instance=RequestContext(request))

def walktoo(dir):
    for path, dirs, files in os.walk(dir):
        yield path, dirs, files
    print path, dirs, files
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

need more than 1 value to unpack

此外,我知道这是一个愚蠢的方式,任何建议将不胜感激.

编辑:

这对我来说实际上非常愚蠢,我完全忘记了os.listdir(dir),这对我的目的来说是一个更合理的功能.如果您使用所选答案,它会清除我遇到的上述问题,但不会清除我想要的结果.

Ada*_*eld 7

path, dirs, files = walktoo('/home/damon/walktemp/%s' % path)
Run Code Online (Sandbox Code Playgroud)

在这一行,你希望walktoo返回三个值,然后将它们的元组,待分解为path,dirsfiles.但是,您的walktoo函数是一个生成器对象:调用walktoo()生成单个值,即生成器.你必须调用next()生成器(或通过对它进行某种迭代来隐式调用它)来获得你真正想要的东西,即它产生的3元组.

我并不完全清楚你想做什么 - 你的walkdeep()函数就像它只想使用返回的第一个值一样walktoo().你的意思是做这样的事吗?

for path, dirs, files in walktoo(...):
    # do something
Run Code Online (Sandbox Code Playgroud)