为什么只能采用一个名字

时间:2010-11-12 06:47:00

标签: python

def path(request, mypath):
    mypath = request.path_info
    _listdir = os.listdir(mypath)  # ['folder1', 'folder2', 'folder3', 'folder4']
    mess = _listdir
    a = ' '
    x=0
    scope = vars()  

    for i in mess:  
        scope['x']+=1  
        a += mess[x]
        a += '\n'

    return HttpResponse(a)

我希望输出是这样的:

folder1
folder2
folder3
folder4

但为什么输出就像这样:

folder1
folder1
folder1
folder1

任何帮助?

5 个答案:

答案 0 :(得分:4)

该功能中有大量不必要的代码。

def path(request):
    return HttpResponse('\n'.join(os.listdir(request.path_info)))

完成工作!

答案 1 :(得分:3)

来自the docs

  

注意:不应修改返回的字典:对相应符号表的影响未定义。

所以,不要这样做。

答案 2 :(得分:1)

你可能想要

a += mess[i]

而不是

a += mess[x]

答案 3 :(得分:1)

I hope the output is like this:

folder1
folder2
folder3
folder4

因此,你有你的输出......

for i in os.listdir(mypath):
    print i

您可return i循环HttpResponse应该没有问题,请执行此操作

returnString = ""
for i in os.listdir(mypath):
    returnString = returnString + i + "\n"

return returnString

答案 4 :(得分:1)

你所拥有的大部分内容都是不必要的。您只想循环返回值。不要修改它们,也不要通过范围间接地使用变量。

def path(request, mypath):
    mypath = request.path_info
    dirs = os.listdir(mypath)  # ['folder1', 'folder2', 'folder3', 'folder4']
    a = ''

    for i in dirs:  
        a += dirs
        a += '\n'

    return HttpResponse(a)