Я обнаружил, что мне нужна функция findup, аналогичная версии node.js, и выбрал рекурсивную реализацию:
import os
def findup(filename, dir = os.getcwd()):
def inner(drive, dir, filename):
filepath = os.path.join(drive, dir, filename)
if os.path.isfile(filepath):
return filepath
if dir == os.path.sep:
raise LookupError('file not found: %s' % filename)
return inner(drive, os.path.dirname(dir), filename)
drive, start = os.path.splitdrive(os.path.abspath(dir))
return inner(drive, start, filename)