Мне нужна программа, которая принимает в качестве параметров имя файла и путь к папке и ищет файл в папке и в любой папке, содержащейся в нем, прямо или косвенно. Функция должна возвращать путь к файлу, если найден, или None, если файл не может быть найден в папке или в любом подкаталоге папки. Функция должна быть рекурсивной.Рекурсивно возвращать путь к файлу
вот мой код:
def search(fname, path):
for item in os.listdir(path):
next = os.path.join(path, item)
try:
search(next,fname)
except:
return next
он должен выглядеть как-то вдоль линий:
>>>search('fileA.txt', 'test')
'test\\fileA.txt'
>>>search('fileB.txt', 'test')
'text\\folder2\\fileB.txt'
ЭСТ. , но я могу получить мой код, чтобы найти fileA.txt, независимо от того, какой файл я скажу, чтобы он искал.
Я спросил учитель для некоторой помощи, это то, что она сказала мне:
** Я вижу несколько проблем:
- Вы не имеете условия в вашей функции, которые на самом деле проверяет, посмотрите, найден ли файл. См. Следующий вопрос при работе над изменением этого.
- fname не соответствует файлу, который соответствует ему, если вы уже добавили на него путь. Перед созданием полного пути к файлу вам нужно проверить имя файла, иначе у вас не будет способа его сопоставления.
- Вы ничего не делаете со значениями, возвращаемыми из рекурсивного вызова. Они должны возвращать либо пути, либо Нет, и вы не проверяете, что возвращается. **
Почему вы используете 'try' /' except'? Я думаю, что вы ищете 'if' /' else'. –
пожалуйста, уточните? – AngelE