变量插值似乎不起作用

时间:2014-12-04 19:37:00

标签: python

我正在尝试编写一个简单的函数,它返回目录及其子目录中的文件列表。我无耻地从另一张SO海报中偷走了这个功能的大部分内容。我使用的是Python 2.6.4。

def getFiles(Asite):
    # returns a list of config files
    from os import listdir
    from os.path import isfile, join
    mypath = '/etc/config/' + Asite
    print mypath
    files = [ f for f in listdir(mypath) if isfile(join(mypath,f)) ]
    return files

该函数只返回一个空列表[]。似乎mypath变量没有被listdir()isfile()函数插值。在有人要求之前,是的,我已经确认实际上存在位于mypath的文件。为什么我的files数组为空?

1 个答案:

答案 0 :(得分:0)

感谢大家的有益评论。事实证明,我搜索的目录中只包含了目录,但没有文件。所以os.listdir()不能用于搜索子目录,因为它只有一个级别(谢谢你abhishekgarg)。我最终使用了下面的代码,它运行得很好(我也在SO上找到了,并进行了一些修改)。

def getFiles(Asite):
    # returns a list of config files
    files = []
    mypath = '/share/profile/base/sol-10-sparc-base/config/' + Asite
    for dirname, dirnames, filenames in os.walk(mypath):
            for filename in filenames:
                    pfile = os.path.join(dirname, filename)
                    files.append(pfile[len(mypath):])
    return files