使用Python,我想以递归方式搜索目录树以获取特定文件名。
**如果找到,请不要打印。
**如果没有找到,则打印一条消息,说明找不到它。
=====这是我到目前为止所没有的错误,但是当找不到文件时没有消息=====
import os
rootDir = 'G:\\some_top_directory\\'
file_name = 'fileOFinterest.txt'
def find_file(file_name,rootDir):
for dirpath, dirnames, filenames in os.walk(rootDir):
if file_name in filenames:
print 'found'
答案 0 :(得分:1)
找到文件时提前退货;这样,在os.walk()
循环完成后,您就知道找不到该文件:
import os
def find_file(name, root):
for _, _, filenames in os.walk(root):
if name in filenames:
return # found the file, exit early
print 'Not found'
rootDir = 'G:\\some_top_directory\\'
file_name = 'fileOFinterest.txt'
find_file(file_name, rootDir)
我对_
为每次迭代返回的dirpath和目录值都使用了os.walk()
;否则循环忽略这些和_
向读者发出信号。
答案 1 :(得分:0)
if not any(file_name in filenames
for dirpath, dirnames, filenames in os.walk(rootDir)):
print file_name, 'not found'
答案 2 :(得分:0)
如果您使用的是Python3.5 +,则可以将**
与recursive
标志一起使用:
import glob
rootDir = 'G:\\some_top_directory\\'
file_name = 'fileOFinterest.txt'
found_files = glob.glob("{}**\\{}".format(rootDir, file_name), recursive=True)
if not found_files:
# do whatever you need
pass
else:
print('found')