Python 如何检查文件夹是否有子文件夹,然后使用listdir()列出目录?

Python 如何检查文件夹是否有子文件夹,然后使用listdir()列出目录?,python,file-search,Python,File Search,我想编写一个文件搜索代码,其中我不知道我正在搜索的目录是否有子目录,我想检查一下,这样我就不会出现如下错误: [错误267]目录名无效:“C:/Path/To/directory”。 我写了一个类似这样的代码,如果它找到了文件,它就会中断并停止程序,如果没有,它就会下一层,以此类推 filename = raw_input('> ') path = 'C:/Path/Of/Directory/You/Want/To/Search/In' fldr = os.listdir(path) f

我想编写一个文件搜索代码,其中我不知道我正在搜索的目录是否有子目录,我想检查一下,这样我就不会出现如下错误: [错误267]目录名无效:“C:/Path/To/directory”。 我写了一个类似这样的代码,如果它找到了文件,它就会中断并停止程序,如果没有,它就会下一层,以此类推

filename = raw_input('> ')
path = 'C:/Path/Of/Directory/You/Want/To/Search/In'
fldr = os.listdir(path)

for f in fldr:
    p = path + '/' + f
    sfldr = os.listdir(p)
    if os.path.exists(p + '/' + filename):
        print 'Found file!!', p + '/' + filename
        break
    else:    
        for sf in sfldr:
            pp = p + '/' + sf
            ssfldr = os.listdir(pp)
            if os.path.exists(pp + '/' + filename):
                print 'Found file!!', pp + '/' + filename
                break
            else:
                for ssf in ssfldr:
                    ppp = pp + '/' + ssf
                    sssfldr = os.listdir(ppp)
                    if os.path.exists(ppp + '/' + filename):
                        print 'Found file!!', ppp + '/' + filename
                        break
一个容易注意到的错误是,当目录没有3层子文件夹时,程序就会中断并发出错误消息。因此,如果我能在进入文件夹之前检查文件夹是否有子文件夹,那就太好了。

使用
os.scandir()
。在
os.walk()上提供更好的速度

链接到文档

或者使用,
glob

>>> from glob import glob
>>> paths = glob('*/')
>>> paths
['bin/', 'content/', 'include/', 'lib/', 'output/']
>>> 

你应该只使用@CodeMaker,这有帮助吗?@RahulLakhanpal我决定把它关小一点,不要急于学习这些东西……我对python是新手,所以我会一步一步地学习。这非常令人兴奋,有时我会忘乎所以,试着用我的技能做一些事情。无论如何,谢谢你的帮助!!我认为glob和os.walk不一样快。是的,那不快。我只是举个例子。然而,我同意斯堪的纳维亚()是最快的。PEP 471:“…os.scandir(),在标准库中。此新函数添加了有用的功能,并将os.walk()的速度提高了2-20倍”