在定义的函数外使用函数返回值

时间:2014-01-15 02:22:09

标签: python-2.7

在下面的示例中,

的输出
  

打印文件

None形式出现。这是为什么?

topdir = 'some_directory'
exten = '.txt'

def step(ext, dirname, names):
    ext = ext.lower()

    for name in names:
        if name.lower().endswith(ext):
            return os.path.join(dirname, name)

files = os.path.walk(topdir, step, exten)
print files

请注意,程序会找到正确的文件。我使用print代替return对此进行了测试。只是我无法检索函数之外的信息。我希望文件是一个数组,所以我可以在程序中使用它。谢谢!

2 个答案:

答案 0 :(得分:0)

您的step()函数有三个参数(extdirnamenames),但是当您在os.path.walk中使用它时,您不是给它任何 - 它作为参数而不是函数传递。尝试传递所需数量的参数,然后查看代码是否正常工作。

答案 1 :(得分:0)

好的,经过网上搜索,我觉得我有一个解决方案。 import语句在函数内部,因为我希望自我一致,以便我可以从外部调用它。但那是第二步。

如果可以改进它会很棒。但我认为它完全符合我的要求:

def file_search(dir, pattern):
    import os
    import fnmatch 

    images = [pattern]
    matches = []

    for root, dirnames, filenames in os.walk(dir):
        for extensions in images:
            for filename in fnmatch.filter(filenames, extensions):
                matches.append(os.path.join(root, filename))
    return matches

files = file_search('/Users/aging_gorrila/RESEARCH/python_files/', '*.py')
print files[0]

我得到以下输出:

['/Users/aging_gorrila/RESEARCH/python_files/file_search.py']