Copтиpoвка файлов в директории
У меня в директории files есть 1.000 файлов с именами формата 5_example_11f1954c.file, где 11f1954c - контрольная сумма файла.
Также имеется файл filter.txt, в котором представлено 1.000 строк с контрольными суммами. Содержание файла filter.txt следующего формата:
b81ea33e
f65672c8
4be78049
d935052d
...
Мне нужно перебрать файлы из директории files следующим образом: если контрольная сумма файла из директории files не совпадает с контрольной суммой из текстового документа filter.txt, то файл нужно удалить, а в директории files по итогу останутся только те файлы, чьи контрольные суммы совпали со строкой из файла filter.txt.
Пример: В директории содержатся файлы с именами:
5_0966f47faa_d935052d.file
5_0b0f283d97_b96724ec.file
5_5cc850a970_096cede7.file
5_02d64df100_6e0d0602.file
Файл new.txt имеет следующее содержание:
d935052d
1e7acfee
096cede7
43c283b4
Сортируем файлы:
- Отбрасываем расширение .file с конца и выделяем последние 8 символов файла
5_0a6dac77be_6796620b.file>5_0a6dac77be_6796620b>6796620b - Если последние 8 символов файла не содержатся в файле filter.txt, то удаляем файл из директории.
По итогу директория files должна выглядеть так:
5_0966f47faa_d935052d.file
5_5cc850a970_096cede7.file
Помогите, пожалуйста, решить эту задачу! Написал уже кучу циклов и условий, использовал with open, срезы, но ничего не выходит..
import os
for root, dirs, files in os.walk(r"D:\Загрузки\16_8b6df81f"):
for filename in files:
filename_name = filename.index('.')
filename = filename[:filename_name]
filename = filename[-8:]
#print(filename)
with open(r"D:\Загрузки\test\new1.txt") as search:
for line in search:
line = line.rstrip() # remove '\n' at end of line
if filename == line:
print(1)
filename = 0
Удаляю файлы, чексумма которых совпала со словарем
import os
for root, dirs, files in os.walk(r"D:\Загрузки\16_8b6df81f"):
for filename in files:
filename_name = filename.index('.')
filename_checksum = filename[:filename_name]
filename_checksum = filename_checksum[-8:]
#print(filename)
with open(r"D:\Загрузки\test\new1.txt") as search:
for line in search:
line = line.rstrip() # remove '\n' at end of line
if filename_checksum != line:
path = os.path.join(os.path.abspath(os.path.dirname(__file__)), filename)
os.remove(path)
#print(1)
filename_checksum = 0