В Python есть библиотека с именем UUID (универсальный уникальный идентификатор) для генерации случайного объекта длиной 128 бит. Эта библиотека генерирует уникальные идентификаторы на основе системного времени и сетевого адреса компьютера. Объект UUID неизменяем и содержит некоторые функции для создания различных уникальных идентификаторов. UUID используется для многих целей, таких как создание уникального случайного идентификатора, MAC-адреса на основе идентификатора, криптографических значений хеш-функции или случайных документов. Из этой статьи вы узнаете, как создавать различные типы библиотек UUID, используя разные функции UUID.
Пример 1: Создание UUID на основе системного времени и MAC-адреса
В следующем примере показано использование uuid1() функции UUID модуль для генерации различных значений UUID и читать и печатать различные значения свойств объекта UUID. Объект UID определяется путем вызова метода uuid1() для генерации уникального идентификатора на основе системного времени и MAC-адреса. Затем печатаются нормально сгенерированный идентификатор, соответствующее значение в байтах, целочисленное значение и шестнадцатеричное значение идентификатора. Затем в следующей части сценария печатаются свойства версии, полей, узла и времени идентификатора.
#!/usr/bin/env python3 # Импорт модуля uuid import uuid # Создание случайного идентификатора с помощью uuid1() UID = uuid. uuid1() # Распечатать нормальный идентификатор print("Нормальное значение: ", UID) # Распечатать байтовый идентификатор print("Значение байта: ", repr(UID. bytes) # Распечатать целочисленный идентификатор print("Целое число: ", UID. int) # Распечатать шестнадцатеричный идентификатор print("Шестнадцатеричное значение: ", UID. шестнадцатеричный) # Распечатать номер версии print("Версия: ", UID.version) # Распечатать значения полей print("Поля: ", UID.fields) # Распечатать значение MAC в шестнадцатеричном формате print("Значение узла: ", hex(UID.node) # Распечатать значение времени print(" Значение времени: ", UID.time)
Вывод
Вывод показывает, что значение идентификатора по умолчанию было сгенерировано в шестнадцатеричном формате путем разделения отдельных частей дефисом. Последняя часть значения идентификатора содержит MAC-адрес, который всегда будет одинаковым. Свойство узла объекта ID содержит MAC-адрес.
Пример 2: Создание значений SHA-1 и MD5 имени хоста с помощью uuid3() и uuid5()
Важное использование UUID – создание криптографических хэш-значений. uuid3() и uuid5() функции UUID модуля используются для генерации MD5 и SHA-1 значения. В следующем сценарии переменная кортежа с именем hosts объявляется с тремя допустимыми URL-адресами. Значения кортежа повторяются с использованием цикла for. Затем значения MD5 и SHA-1 каждого URL-адреса вычисляются и печатаются на каждой итерации цикла.
#!/usr/bin/env python3 # импорт модуля uuid import uuid # Определение кортежа из двух имен хостов hosts =('www.andreyex.ru', 'www.google.com') # Итерировать значения кортежа, используя цикл для имени хоста в хостах: # Распечатать имя хоста print("Hostname: ", hostname) # Используйте uuid5(), чтобы получить значение SHA-1 print(' \t Значение SHA-1: ', uuid.uuid5((uuid.NAMESPACE_DNS, hostname)) # Используйте uuid3() для получения значения MD5 print(' \t Значение MD5: ', uuid.Uuid3((uuid. NAMESPACE_DNS, hostname))
Пример 3: создание случайных чисел с помощью uuid4()
Если вы хотите, чтобы генерировать UUID случайным образом, то вы должны использовать uuid4() функцию UUID модуля. Следующий скрипт сгенерирует пять UUID на основе случайных значений с помощью метода uuid4(). В то время как цикл используется здесь для вызова uuid4() методы пять раз и печатать случайно сгенерированные UUID значения.
#!/usr/bin/env python3 # import uuid module import uuid # Инициализируем переменную i = 1 # Повторяем цикл пять раз, while(i<6): # Сгенерируем случайное число print("No-", i,' ', uuid.uuid4()) # Увеличиваем значение на единицу i = i + 1
Вывод
Если вы запустите сценарий несколько раз, он будет генерировать разные UUID в разное время.
Пример 4: Создание отсортированного UUID из списка с помощью объекта UUID
В следующем сценарии показано, как преобразовать элементы списка в UUID и распечатать значения после сортировки. Здесь переменная list_ids объявляется с четырьмя элементами списка, где каждое значение элемента должно быть в допустимом формате UUID. Сначала печатаются исходные значения list_ids. Затем каждое значение элемента списка преобразуется в UUID с помощью цикла в блоке try. Если list_ids содержит какое-либо значение элемента, которое не соответствует формату UUID, будет сгенерировано исключение ValueError и будет напечатано сообщение об ошибке. Если во время преобразования ошибок не возникает, то преобразованные UUID сортируются с помощью метода sort(). Затем с помощью цикла for распечатываются отсортированные значения UUID.
#!/usr/bin/env python3 # import uuid module import uuid # Создайте список идентификаторов допустимого формата list_Ids = [ 'a4f8dd97-c8be-345b-239e-8a68e6abf800', '673a5eaa-56c6-aaaa-bc4567-4536cd', 'dcbbaa88-5bf1-11dd-ab48-990ab200d674', '4567aabb-89ad-77ab-67ad-aaaccdd904ae' ] # Распечатать значения списка с помощью цикла print(' \n Значения списка: ') for val in list_Ids: print (val) # Значения списка будут преобразованы в uuid и отсортированы try: uuids = [ uuid.UUID(s) for s in list_Ids ] uuids.sort() print(' \ n Значения отсортированных uuids:') for val in uuids: print (val) except ValueError: # Распечатать сообщение об ошибке, если какое-либо значение списка находится в недопустимом формате print('Плохо сформированный шестнадцатеричный UUID')
Вывод
Здесь все элементы в списке имеют правильный формат UUID. Таким образом, ValueError генерироваться не будет. Первая часть вывода напечатала исходные элементы списка, а вторая часть вывода напечатала отсортированные значения UUID.
Заключение
Вам может потребоваться сгенерировать UUID в Python для различных целей программирования. В этой статье показано, как сгенерировать различные UUID с помощью различных методов. После прочтения этой статьи и практики включенных примеров вы сможете создавать UUID в соответствии с вашими потребностями в программировании.