Я пытаюсь найти самую новую версию файлов, каждый из которых содержит уникальный ссылочный код как часть имени файла, например, 12345 . У меня есть большой список ссылочных кодов, которые находятся в парах, потому что программа сравнивает содержимое двух PDF-файлов (каждый раз через), используя импорт fuzzywuzzy. Вывод представляет собой список нечетких отношений и путей к папкам.
Проблема, с которой я столкнулся, заключается в использовании glob.glob, чтобы попытаться найти самую новую версию каждого файла в древовидной структуре. У меня нормально работает, когда все файлы в одной папке.
Ссылочные коды находятся в списке под названием listoflists. Он проходит по ним и объединяет путь к файлу. Я попытался использовать ** \, который работает (на дереве), когда просто проверяю суффикс файла, например PDF. Но при проверке дерева на наличие эталонных кодов с использованием подстановочной стороны кода, код не дает ожидаемых результатов
работает: -
r"C:\compare2\*" + str(log1) + "*.pdf"
не работает должным образом: -
r"C:\compare2\**\*" + str(log1) + "*.pdf"
Нет ошибки, только при тестировании одной папки я получаю ожидаемые результаты, тогда при использовании ** в более чем одной папке он не проверяет все папки на наличие строки.
keep_file_path1 = []
keep_file_path2 = []
fuzzy_list = []
def log_num(fuzzy_list, list_of_lists):
# iterate through log numbers stored in list
for log1, log2 in list_of_lists:
# passing a string into the file name by + concatenating +.
file_path1 = r"C:\compare2\**\*" + str(log1) + "*.pdf"
file_path2 = r"C:\compare2\**\*" + str(log2) + "*.pdf"
# check if files exists
if glob.glob(file_path1):
print("there is a match for log number: " + str(log1) + " file_path1")
if glob.glob(file_path2):
print("there is a match for log number: " + str(log2) + " file_path2")
# go to compare function
compare(file_path1, file_path2)
else:
print ("NO Matches for log number: " + str(log1) + " or for log number: " + str(log2) + ".")
continue # go find a different number
else:
save_to_file(fuzzy_list, keep_file_path1, keep_file_path2)
Проверка на последнюю версию работает (когда в одной папке ...) и находится в другой функции
# check for the newest file
latest_file1 = max(list_of_files, key=os.path.getctime)
Я еще не пробовал os.walk, так как хочу сначала попробовать glob. Можно ли это сделать с помощью glob? Или, если бы я захотел получить самую новую версию каждого из них, можно было бы расплющить дерево.