Python 如何检查文件夹是否有子文件夹,然后使用listdir()列出目录?
我想编写一个文件搜索代码,其中我不知道我正在搜索的目录是否有子目录,我想检查一下,这样我就不会出现如下错误: [错误267]目录名无效:“C:/Path/To/directory”。 我写了一个类似这样的代码,如果它找到了文件,它就会中断并停止程序,如果没有,它就会下一层,以此类推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
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倍”