Новое на python, извинения, если это простой вопрос. Я немного искал и нашел много на поиск файлов с неизвестным именем и известным расширением файла, но не с известным именем и неизвестным расширением, и если никто не возражает, я мог бы немного помочь получить код для правильной работы.Python Search for File Unknown Extension
То, что я пытаюсь написать, это функция Python, которая принимает каталог и имя, а затем возвращает список с указанием пути ко всем файлам (с любым расширением файла) и каталогам с этим именем. Параметром каталога будет компьютерный диск (например, C или F), а параметр name - это имя (без расширения) файла для поиска.
Ниже приведен код, который у меня есть:
import os
import glob
def search_directory(directory,name):
result = []
for root,dirs,files in os.walk(directory,topdown=True):
files_lower = []
dirs_lower = []
for i in files:
files_lower.append(i.lower())
for i in dirs:
dirs_lower.append(i.lower())
for i in glob.glob(name + '.*'):
if i.lower() in files_lower:
result.append(root + "\\" + files[files_lower.index(i.lower())])
if name.lower() in dirs_lower:
result.append(root + "\\" + dirs[dirs_lower.index(name.lower())])
if (len(result) == 0):
result.append("fileNotFound")
return result
В настоящее время я только смог найти результаты, если копия файла находится в директории моей программы. Если там нет копии, он не находит файл, хотя на моем диске есть две копии.
Я надеялся, что кто-нибудь может объяснить мне, почему это так и как его исправить, чтобы он всегда находил файлы, которые я ищу.
Чтобы быть ясным, причина, по которой у вас возникли проблемы, заключается в том, что 'glob.glob (name + '. *')' Всегда пересматривает корневой каталог, потому что вы не добавили каталог, в который вы вошли. Но это своего рода глупый дизайн, несмотря на то, что мой ответ полностью обходит проблему. – ShadowRanger
Спасибо! Я ценю помощь! Я не думал о том, чтобы отделить расширение, хотя в ретроспективе это намного проще. И я довольно новичок в программировании, поэтому я не знал о генераторах или сопрограммах, поэтому я тоже это ценю. Еще одна вещь, чтобы добавить в свой инструментарий :) – tvr2006