Search for a file given its name and the starting search directory. The search is limited to a set depth of subdirectories. Python makes this easy to do.
Limited Search for File
# search for a filename in a given folder and its subfolders,
# but limit the depth of subdirectories to search in
# tested with Python24 by HAB
import os
def limited_walk(folder, limit, n = 0):
"""generator similar to os.walk(), but with limited subdirectory depth"""
if n > limit:
return
for file in os.listdir(folder):
file_path = os.path.join(folder, file)
if os.path.isdir(file_path):
for item in limited_walk(file_path, limit, n + 1):
yield item
else:
yield file_path
# file to search for ...
fname = "quiz2.py"
# folder to start search ...
folder = r"C:\Python24\Atest"
# search 1 subdirectory deep
# change the depth as needed
for filename in limited_walk(folder, 1):
# make search case insensitive
if os.path.basename(filename).lower() == fname.lower():
result = filename
break
else:
result = None
if result:
print "File found -->", result
else:
print "File %s not found" % fname
Be a part of the DaniWeb community
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.