我正在使用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
我得到这个错误:
need more than 1 value to unpack
另外,我知道这是一个愚蠢的方法,任何建议将不胜感激。在
编辑:
这对我来说真是太傻了,我完全忘记了操作系统列表目录(dir)对我来说这是一个更合理的函数。如果你使用选择的答案,它会清除我遇到的上述问题,但不会得到我想要的结果。在
根据您对Adam Rosenfield的评论,这是另一种获得手术室步行(方向)。在
这是你的walktoo(dir)功能的替代品。在
另外,请确保
^{pr2}$render_to_response
的第二个参数使用您创建的变量:path
是一个字符串,所以说path[0]
。。。path[1]
。。。path[2]
您实际上是说要使用字符串的第一个、第二个和第三个字符。在在这一行中,您期望}。但是,您的
walktoo
返回一个由三个值组成的元组,然后将这些值解压为path
、dirs
和{walktoo
函数是一个生成器对象:调用walktoo()
会产生一个值,即生成器。您必须在生成器上调用next()
(或者通过对它进行某种迭代来隐式地调用它)才能得到您真正想要的,即它生成的3元组。在我不太清楚您要做什么您的
^{pr2}$walkdeep()
函数的编写方式就像它只想使用walktoo()
返回的第一个值一样。你是不是想做这样的事?在相关问题 更多 >
编程相关推荐