Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 变量插值似乎不起作用_Python - Fatal编程技术网

Python 变量插值似乎不起作用

Python 变量插值似乎不起作用,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

我试图编写一个简单的函数,返回目录及其子目录中的文件列表。我无耻地从另一张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

函数只返回一个空列表[]。似乎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。这些文件是常规文件还是符号链接?