Python 变量插值似乎不起作用
我试图编写一个简单的函数,返回目录及其子目录中的文件列表。我无耻地从另一张SO海报上偷走了大部分功能。我正在使用Python 2.6.4Python 变量插值似乎不起作用,python,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 fi
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
函数只返回一个空列表[]。似乎listdir和isfile函数没有对mypath变量进行插值。在任何人询问之前,是的,我已经验证了mypath中确实存在文件。为什么我的文件数组是空的?谢谢大家的宝贵意见。事实证明,我搜索的目录中只有su个目录,但没有文件。所以os.listdir不适用于搜索子目录,因为它只进行了一个级别的搜索。谢谢abhishekgarg。我最终使用了下面的代码,它工作得很好,我也发现了它,并做了一些修改
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
插值在这种情况下意味着什么?为什么不使用os.walk函数获取所有文件?因为os.listdir只运行一个级别,可能我使用的插值错误,但我的意思是listdir和join应该使用mypath变量的值,而不是字符串“mypath”。@abhishekgarg-如果我能先让代码为os.listdir工作,我会很高兴地对os.walk进行更改,感谢您提供的信息分解代码,一次一块地尝试,看看它在哪里没有达到您期望的效果。例如,尝试打印listdirmypath并查看其生成的内容。如果这样做有效,在结果上写一个for循环,在这里打印isfilejoinmypath的结果,f。这些文件是常规文件还是符号链接?