任何人都能告诉代码中的return语句有什么问题吗?

时间:2017-06-24 05:56:04

标签: python-2.7

代码的第一个版本:

这会返回一个列表,但只包含少量文件名,而不是返回所有文件名的列表。

import os

def dig(directory):
    c_path = []
    for filename in os.listdir(directory):
        path = os.path.join(directory, filename)
        if os.path.isfile(path):
            c_path.append(path)
        else:
            dig(path)
    return c_path

directory = str(input("Enter Directory: "))
files = dig(directory)
for f in files:
    print f

代码的第二版:

此版本不会返回列表,但会在函数内打印列表并打印所有文件名,所以我不知道第一个版本中返回列表的问题是什么。

import os

def dig(directory):
    c_path = []
    for filename in os.listdir(directory):
        path = os.path.join(directory, filename)
        if os.path.isfile(path):
            c_path.append(path)
        else:
            dig(path)
    for entry in c_path:
        print entry

directory = str(input("Enter Directory: "))
files = dig(directory)

1 个答案:

答案 0 :(得分:0)

您没有将递归dig()输出附加到列表中(您只需将其调用)尝试使用:

def dig(directory):
    c_path = []
        for filename in os.listdir(directory):
        path = os.path.join(directory, filename)
        if os.path.isfile(path):
            c_path.append(path)
        else:
            c_path += dig(path)
    return c_path

虽然我建议您使用os.walk(),因为它会为您完成所有肮脏的工作。