我正在尝试编写一个简单的函数,它返回目录及其子目录中的文件列表。我无耻地从另一张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
数组为空?
答案 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