А если очень хочется разобраться с рекурсией, то вот:
import os
def SearchDir(path, z=[]):
if os.path.exists(path):
if os.listdir(path):
for d in os.listdir(path):
if os.path.isdir(os.path.join(path, d)):
z += [(os.path.join(path, d))]
SearchDir(os.path.join(path, d), z)
else:
return print('The directory is empty')
else:
return print('The directory does not exist')
return z
path = r'f:\Python-pyramid\farm'
print(SearchDir(path))
Но вы видите, что код очень непричёсанный, да? Слишком много лишнего написано, да и return print удивляет.