Это приводит только к небольшому списку возвращенных предметов, которые ему соответствуют, когда есть еще много, которые соответствуют.findit содержит строку поиска, которая преобразуется в нижний регистр.Список файлов также преобразуется в нижний регистр.
home_dir_path = "/home/share/DUMMY_DATA" # Development data
full_path_original = ""
regex_string = "^" + home_dir_path + "/"
# Enter all or part of the file name to search:
if submit_search is not None:
print "<h1>Searching for: " + findit + "</h1>"
# Convert search_string to lower case for compare.
search_string = findit.lower()
for path, directories, files in os.walk(home_dir_path):
for file in files:
full_path_original = os.path.join(path, file)
full_path_display = re.sub(regex_string, "", full_path_original)
full_path = full_path_display.lower()
if search_string in full_path:
print full_path_display + "<br>"
Если я выполняю печать full_path перед последним оператором if, в нем перечислены все файлы, поэтому кажется, что search_string не работает.Но это соответствует паре десятков из них, где есть пара сотен, которые должны отображаться.
Есть ли другой подход, который я должен использовать, чем 'if search_string in full_path:'?
Вот некоторые примеры данных, которые я собрал, чтобы воспроизвести проблему.
find . | grep -i alpha
./alpha
./alpha/resume
./alpha/a
./alpha/b
./alpha/c
./alpha/d
./alpha/e
./alpha/f
./alpha/.hidden_file_test
./Alpha
./alphA
./alphA/stuff
./AlPha
./AlPha/.hidden_nothing
Приведенный выше код, используемый для поиска «alpha» в том же каталоге, что и выше, возвращает это:
Searching for: alpha
alpha/f
alpha/f
alphA/stuff
AlPha/.hidden_nothing
AlPha/.hidden_nothing
AlPha/.hidden_nothing
Это подмножество того, что там есть, и оно содержит дубликаты.