Я работаю с большим количеством очень больших файлов (например, 1000 x 512 МБ), и я реализовал способ ускорить работу, записав определенную информацию в базы данных, к которым можно получить доступ когда я снова запускаю программное обеспечение. По этой причине мне нужно иметь возможность генерировать уникальные имена файлов для произвольных подмножеств этих файлов.Python: создание уникального имени файла для списка файлов
Я попытался сгенерировать имена файлов в зависимости от общего размера файла в подмножестве, даты изменения файла и даже их комбинаций. Проблема в том, что многие файлы имеют одинаковый размер и ту же самую дату изменения, что делает мою текущую строку идентификатора неоднозначной. Важно только то, что для одного и того же списка файлов идентификатор всегда одинаков, поэтому я всегда могу получить доступ к правильному файлу для тех же файлов. Любые идеи приветствуются!
Вот что я использую в данный момент, который не работает ...
import os
import glob
import datetime
file_paths = glob.glob("path/to/files/*.foo")
def modification_date(file_path):
return datetime.datetime.fromtimestamp(os.path.getmtime(filename=file_path))
uid = [modification_date(f) for f in file_paths]
uid = [d.year + d.day + d.day + d.hour + d.minute + d.second for d in uid]
uid = sum(uid) // len(uid) + sum([os.path.getsize(f) for f in file_paths])
Если все метаданные (размер, дата модификации) одинаковы, вам необходимо использовать содержимое файла. Простой md5 хэш может сделать. – Selcuk
У этих файлов есть имена? Можете ли вы указать свое имя подмножества в комбинации этих имен файлов? ех. Подмножество, состоящее из «foo.txt» и «bar.exe», называется '' (foo.txt) (bar.exe) ". – Kevin
@Kevin Я также подумал об использовании имен файлов, но они довольно длинные, и у меня будет очень длинный уникальный идентификатор. Возможно, есть быстрый способ конвертировать все имена файлов в последовательность чисел ... имена файлов содержат всевозможные буквы и символы, хотя ... – HansSnah