如何从函数python中获取完整列表

时间:2016-07-12 06:30:44

标签: python

我对python完全陌生。所以这是我的问题。

Wordset.find({ 'person': person._id })

在输入我想要走的文件夹时,它会给出完整列表。 但如果我修改如下:

def visitdir(path):
    result = []
    for root,dirs,files in os.walk(path):
        for filepath in files:
            result = ''.join(os.path.join(root,filepath))
            print result            
if __name__ == '__main__':
    path = raw_input("Please input the folder you want to walk:")
    visitdir(path)

它只会从所选路径中提供一个项目。如果我只想获得与前一个相同的结果,我该如何调用该函数?

提前致谢。

3 个答案:

答案 0 :(得分:0)

当你致电return时,你完成了功能流并返回了值。 另外,为什么要创建列表'结果'然后用字符串覆盖它?

我认为你的意思是这样的:

def visitdir(path):
    result = []
    for root,dirs,files in os.walk(path):
        for filepath in files:
            filename = ''.join(os.path.join(root,filepath))
            result.append(filename)
    return result

例如,用结果填写列表并最终返回。

您可以做的另一件事是使用yield

答案 1 :(得分:0)

return终止给定函数的执行。

最简单的方法之一是yield值,并从函数中生成生成器。

def visitdir(path):
    for root,dirs,files in os.walk(path):
        for filepath in files:
            result = ''.join(os.path.join(root,filepath))
            yield result

if __name__ == '__main__':
    path = raw_input("Please input the folder you want to walk:")
    print list(visitdir(path))
    # or
    for p in visitdir(path):
        print p

另一种选择是将所有中间结果存储在列表中并返回所述列表。

def visitdir(path):
    results = []
    for root,dirs,files in os.walk(path):
        for filepath in files:
            result = ''.join(os.path.join(root,filepath))
            results.append(result)            
    return results

if __name__ == '__main__':
    path = raw_input("Please input the folder you want to walk:")
    print visitdir(path)
    # or
    for p in visitdir(path):
        print p

答案 2 :(得分:0)

您应该将结果附加到您创建的结果列表中。

#maincontent > div{display:none;}