Архив автора: admin

Можно ли заморозить пакеты в Ubuntu?

Это краткое руководство показывает студентам и новым пользователям, как настроить Ubuntu для удержания или предотвращения обновления пакетов.

В некоторых случаях вы можете не захотеть обновлять конкретный пакет. Например, у вас есть веб-сервер Nginx, настроенный с определенными параметрами, и вы знаете, что обновление изменит его конфигурацию и остановит его работу.

Вы можете настроить удержание пакета, чтобы он не обновлялся даже при наличии обновлений, пока вы не будете готовы его обновить.

Предотвращение установки или обновления пакета называется «удержанием пакета».

Это отличная функция, поскольку вы не будете автоматически обновлять пакет или программное обеспечение, которые вы не хотите обновлять в это время. Вы также можете обновить его позже.

Чтобы начать работу с блокировкой или удержанием пакетов в Ubuntu, выполните следующие действия:

Показать пакеты

Существует множество инструментов для блокировки или предотвращения обновления пакетов. Вы можете установить и использовать Synaptic package management, Aptitude для хранения пакетов или использовать команду для того же.

Используя командную строку, чтобы показать все пакеты, которые не обновляются, выполните следующие команды:

sudo apt-mark showhold

Это перечислит пакеты, которые находятся в режиме ожидания.

Удерживайте или блокируйте пакеты

Теперь, когда вы знаете, как отображать заблокированные пакеты, используйте приведенные ниже команды, чтобы заблокировать или предотвратить обновление определенных пакетов.

sudo apt-mark hold <имя-пакета>

Если вы используете aptitude, используйте следующие команды:

sudo aptitude hold <имя-пакета>

Замените <имя-пакета> на пакет, который вы хотите отложить. Например, если вы хотите заблокировать веб-сервер Nginx, выполните следующие команды:

sudo apt-mark hold nginx

Это будет удерживать веб-сервер Nginx от обновления.

Разблокировать пакеты

Если вы хотите разморозить или разблокировать пакеты, чтобы они продолжали получать обновления, выполните следующие команды:

sudo apt-mark unhold <имя-пакета>

Если вы используете aptitude, выполните следующие команды:

sudo aptitude unhold <имя-пакета>

Снова замените <package-name> на пакет, который вы хотите разблокировать или разморозить, и пусть они продолжают получать обновления.

Например, если вы хотите разблокировать Nginx после того, как вы заблокировали выше, выполните следующие команды:

sudo apt-mark unhold nginx

Управление пакетами Synaptic

Если вы используете управление пакетами Synaptic, перейдите в  Диспетчер пакетов Synaptic  (Действия ==> Поиск Synaptic).

Нажмите кнопку поиска и введите имя пакета, который хотите заблокировать.

Когда вы найдете пакет, выберите его, перейдите в меню «Пакет» и выберите «Заблокировать версию».

Это заблокирует пакет от получения обновлений.

Это должно сработать!

Вывод:

В этом посте показано, как настроить Ubuntu для блокировки пакетов и предотвращения их установки или получения обновлений.

Если вы обнаружите какую-либо ошибку выше, пожалуйста, используйте форму ниже, чтобы сообщить.



2021-02-17T12:30:59
Вопросы читателей

Замена строки Python с использованием шаблона

Любые строковые данные можно заменить другой строкой в ​​Python с помощью метода replace(). Но если вы хотите заменить любую часть строки на соответствие определенному шаблону, вам необходимо использовать регулярное выражение. Он используется для поиска определенного шаблона в конкретном строковом значении, и строка будет заменена другой строкой, если будет найдено какое-либо совпадение. Python использует модуль ‘re’ для использования шаблона регулярного выражения в скрипте для поиска, сопоставления или замены. Использование шаблонов регулярных выражений для замены строк немного медленнее, чем обычный метод replace(), но многие сложные поиски и замены можно легко выполнить с помощью шаблона. Вы можете заменить строку различными способами, используя шаблон в Python. В этой статье показаны некоторые распространенные варианты использования шаблона для замены строки.

 

Список метасимволов:

Прежде чем использовать шаблон для замены строки, вы должны знать, как написать шаблон регулярного выражения. Вы можете использовать любое строковое значение в качестве шаблона для точного совпадения. Но для конкретного поиска вы должны написать шаблон регулярного выражения с использованием метасимвола. Список наиболее часто используемых метасимволов для написания шаблонов приведен ниже со смыслом.














    Характер Описание
    . Используется для соответствия любому одиночному символу, кроме новой строки.
    ^ Используется для сопоставления любого символа или строки в начале строки.
   $ Используется для сопоставления любого символа или строки в конце строки.
    + Используется для сопоставления одного или нескольких экземпляров шаблона.
    ? Используется для соответствия нулю или одному вхождению шаблона.
  () Используется для группировки паттернов.
  {} Используется для соответствия на основе нижнего или верхнего или нижнего и верхнего

пределы.

   [] Используется для сопоставления символов на основе заданного диапазона.
   | Используется для сопоставления шаблонов на основе логики OR.
   Используется для определения определенных символов или не символов, цифр или нецифровые.

 

Метод Replace:

В Python для замены строки используется метод sub() модуля re.

Синтаксис:

sub(pattern, replace, string, count=0, flags=0)

Здесь шаблон, замена и строка являются обязательными аргументами. Если шаблон совпадает с любой частью строки, он заменит часть значением замены аргумента. Два других аргумента необязательны. Некоторые варианты использования вышеупомянутых метасимволов с методом sub() показаны в следующих примерах замены строк.

 

Пример-1: заменить строку точным соответствием

Если вам известно точное строковое значение, которое вы хотите искать в основной строке, вы можете использовать значение поисковой строки в качестве шаблона в методе sub(). Создайте файл Python со следующим скриптом. Здесь строковое значение поиска — «дождливый», а заменяющее строковое значение — «солнечный».

#!/usr/bin/env python3

# Импортировать модуль регулярных выражений



# Import regex module

import re



# Определить строку

orgStr = "Это дождливый день"



# Заменить строку

repStr = re.sub("дождливый", "солнечный", orgStr)



# Распечатать исходную строку

print("Оригинальный текст:", orgStr)



# Распечатать замененную строку

print("Замененный текст:", repStr)

 

 

Пример-2: поиск и замена строки в начале

Создайте файл python со следующим сценарием, чтобы узнать об использовании ‘^’ в шаблоне регулярного выражения. Здесь ‘ ^ [A-Za-z] +’ используется в качестве шаблона поиска. Он будет искать все буквенные символы от A до Z и от a до z в начале текста и заменять его пустым значением. Замененная строка будет напечатана в верхнем регистре для метода upper().

#!/usr/bin/env python3

# Импортировать модуль регулярных выражений

import re



# Возьмите строку input

originalText = input("Введите текстn")



# Замените строку на основе шаблона

replacedText = re.sub('^[A-Za-z]+' , '', originalText).upper()



# Распечатать замененную строку

print("Замененный текст:", replacedText)

Вывод:

Здесь «Привет, добро пожаловать в andreyex» принимается как ввод, а слово «Привет» заменяется на ‘ ’ для шаблона.

 

Пример-3: поиск и замена строки в конце

Создайте файл python со следующим сценарием, чтобы узнать об использовании символа «$» в шаблоне регулярного выражения. Здесь ‘[ a-z0-9] + $’ используется в качестве шаблона в скрипте. Он будет искать все небольшие алфавитов и цифры в конце текста, и если возвращается true, то соответствующая часть будет заменена на строке «ru».

#!/usr/bin/env python3

# Импортировать модуль регулярных выражений

import re



# Возьмите строку input

originalText = input("Введите URL-адресn")



# Замените строку на основе шаблона

replacedText = re.sub('[a-z0-9]+$' , 'ru', originalText)



# Распечатать замененную строку

print("Замененный текст:", replacedText)

Вывод:

Здесь «https://www.google.com» используется как вводимый текст, а после замены «https://www.google.ru» печатается как вывод.

 

Пример-4: поиск и замена определенной части строки

Создайте файл Python со следующим скриптом для поиска и замены части текста в том месте, где совпадает шаблон. Здесь список адресов электронной почты назначается в виде текста переменной с именем emails. ‘@[az]’ — шаблон для поиска. Он будет искать любую подстроку, начинающуюся с маленьких букв, за которыми следует символ «@». Если какая-либо подстрока совпадает, она заменит эту подстроку на @andreyex.

#!/usr/bin/env python3

# Импортировать модуль регулярных выражений

import re



# Определить строку

emails = 'nadmin@google.runmanager@yahoo.com nandreyex@andreyex.ru'



# Заменить конкретную часть строка на основе шаблона

replacedText = re.sub('@[a-z]*', '@andreyex', emails)



# Вывести исходную строку

print("Первоначальный текст:", emails)



# Печать замененных строк

print("nЗамененный текст:", replacedText)

 

Вывод:

Здесь каждая доменная часть адреса электронной почты, назначенная в тексте, заменена на «andreyex».

 

Вывод:

В этой статье показаны некоторые очень распространенные варианты использования шаблонов регулярных выражений для замены строк. В python существует множество других вариантов для написания различных типов простых и сложных шаблонов для поиска и замены строки текста.



2021-02-16T22:19:59
Python

Лучшие дистрибутивы на основе Arch Linux

Arch Linux, впервые выпущенный почти два десятилетия назад, стал одним из самых влиятельных дистрибутивов Linux всех времен, привлекающим пользователей своей простотой, современностью и универсальностью. Возможно, лучшим свидетельством влияния Arch Linux является тот факт, что сейчас существует несколько дистрибутивов, основанных на нем.

Некоторые производные Arch Linux делают дистрибутив более доступным для неопытных пользователей, а некоторые были созданы в ответ на различные ключевые решения по проектированию системы, принятые разработчиками Arch Linux. Ниже перечислены 5 лучших дистрибутивов Linux на основе Arch, о которых вы должны знать в 2020 году.

 

Топ 5 лучших дистрибутивов Linux на основе Arch

1. Manjaro

Лучшие дистрибутивы на основе Arch Linux

Manjaro (названный в честь горы Килиманджаро) на сегодняшний день является самым популярным дистрибутивом Linux, основанным на Arch в 2020 году. Его первая версия была выпущена в 2011 году с целью объединить передовой характер Arch Linux с упором на удобство использования и доступность.

В результате получился дистрибутив Linux, подходящий как для начинающих, так и для опытных пользователей. Поскольку Manjaro отличается упрощенным, удобным для пользователя процессом установки и поставляется с предустановленными средами рабочего стола, графическими приложениями для простой установки программного обеспечения и обновления системы, а также кодеками для воспроизведения мультимедийных файлов, дистрибутив можно использовать сразу же.

Если вы решите попробовать Manjaro, вам нужно будет выбрать, какую версию вы хотите загрузить. Существует три официальных выпуска со средой рабочего стола (XFCE, KDE Plasma и GNOME) и одна минимальная версия, которую вы можете использовать для создания собственной системы на основе Manjaro с нуля. Кроме того, сообщество Manjaro отвечает за несколько неофициальных выпусков.

Если у вас есть одноплатный компьютер на базе ARM, такой как Raspberry Pi, вы будете рады узнать, что существует несколько редакций ARM, поддерживаемых командой Manjaro, в том числе одна, основанная на KDE Plasma.

 

2. Anarchy Linux

Лучшие дистрибутивы на основе Arch Linux

Многие пользователи Linux, которые хотят попробовать Arch Linux, боятся его ручной установки, которая подробно описана в Arch Wiki. Anarchy Linux — это простой в использовании установщик Arch Linux, который пытается сделать процесс установки более доступным.

Программа установки сокращает усилия, необходимые для установки Arch Linux, до ряда простых шагов, которые завершаются полностью функциональной системой со средой рабочего стола, графическими драйверами, дополнительным программным обеспечением и поддержкой AUR.

Разработчики Anarchy Linux предоставляют пять полностью настраиваемых окружений рабочего стола и менеджеров окон (Cinnamon, GNOME, Openbox, XFCE и Budgie), но вы также можете установить общие версии других DE и WM.

Когда вы закончите установку, вы можете продолжить работу с учебными пособиями, опубликованными на Arch Wiki, но ваша система должна быть в основном готова к использованию.

 

3. Artix Linux

Лучшие дистрибутивы на основе Arch Linux

В октябре 2012 года systemd, базовое программное обеспечение, запускающее остальную часть системы, стало по умолчанию в новых установках Arch Linux. Принятию решения предшествовал жаркий обмен мнениями между членами сообщества Arch, многие из которых были убеждены, что systemd не соответствует простой природе Arch Linux.

Большинство пользователей Arch Linux в конечном итоге приняли это изменение, но небольшая часть придерживалась своего мнения, что PID1 должен быть простым, безопасным и стабильным. Эта небольшая часть создала Artix Linux, скользящий выпуск, основанный на Arch Linux, который использует OpenRC, runit или s6 в качестве init.

Установка Artix Linux подробно описана на его веб-сайте, и любой, кто когда-либо успешно устанавливал Arch Linux, не должен иметь с ней никаких проблем.

Как производная от Arch Linux, Artix Linux предназначена в основном для опытных пользователей, которые видят в systemd серьезную угрозу безопасности. У обычных пользователей нет абсолютно никаких причин избегать использования systemd, особенно с учетом того, что он уже некоторое время используется в большинстве других основных дистрибутивов Linux.

 

4. Chakra

Лучшие дистрибутивы на основе Arch Linux

Если вам нравится среда рабочего стола KDE, вам стоит попробовать Chakra, потому что она ориентирована исключительно на программное обеспечение KDE, сводя к минимуму использование других наборов инструментов виджетов.

Этот дистрибутив начался как проект упаковки KDEmod, который был создан группой преданных пользователей Arch Linux для улучшения и упрощения стандартной установки KDE с Arch Linux. В конце концов, группа решила выпустить KDEmod как собственный ISO-образ и еще больше интегрировать его с программным обеспечением KDE. В 2010 году была выпущена первая независимая версия Chakra 0.2, завершившая разработку KDEmod.

Chakra сочетает модель скользящего выпуска, используемую Arch Linux, с собственными основными пакетами, которые замораживаются на определенный период времени и обновляются только при обнаружении серьезных проблем с безопасностью. Эта модель полуавтоматического выпуска обеспечивает отличную стабильность при сохранении доступа к новейшим программным приложениям.

Chakra live ISO содержит загрузочную среду, которая позволяет вам опробовать систему перед ее установкой с помощью включенной независимой от дистрибутива среды установки Calamares, с которой вы, возможно, знакомы по таким дистрибутивам, как Manjaro, Lubuntu или KaOS.

 

5. Velt/OS

Лучшие дистрибутивы на основе Arch Linux

Материальный дизайн Google повлиял на многих дизайнеров пользовательских интерфейсов, научив их использовать адаптивную анимацию и переходы, сеточные макеты, отступы и эффекты глубины, чтобы сделать программное обеспечение более удобным в использовании и более привлекательным. Velt/OS — это экспериментальная среда рабочего стола в стиле Material Design, которую можно установить на любой существующей установке Arch Linux или легко протестировать через ISO-образ на основе Arch Linux.

Разработка Velt/OS неуклонно прогрессирует уже полдесятилетия, и ее разработчики, похоже, пришли к чему-то поистине великому. Макет явно вдохновлен Windows, но Material Design придает Velt/OS уникальный вид, который является долгожданным отходом от обычных настольных сред.

К сожалению, у двух главных людей, стоящих за этим захватывающим проектом, Эйдана Шафрана и Стефана Квечински, похоже, много дел, потому что прогресс был довольно медленным. Но даже если Velt/OS никогда не станет основной средой рабочего стола, она продолжит служить подтверждением концепции, демонстрируя достоинства Material Design будущим разработчикам с открытым исходным кодом и пользователям Arch Linux.



2021-02-16T21:13:26
ArchLinux

Преобразование Bytearray в байты в Python

Python поддерживает множество различных типов объектов данных. Два из них — это объекты bytearray и bytes. Функция bytearray() возвращает объект массива байтов. Этот объект является изменяемым и поддерживает целые числа от 0 до 255. Функция bytes() возвращает байтовые объекты, не может быть изменена и поддерживает целые числа от 0 до 255. В этой статье будут описаны эти функции и объяснено, как можно преобразовать объекты байтового массива. в байтовые объекты.

 

Синтаксис метода bytearray()

bytearray ([ data_source [, encoding [, errors]]])

Три аргумента этого метода необязательны. Первый аргумент используется для инициализации списка байтов. Если первым аргументом является строка, то второй аргумент используется для кодирования. Наконец, третий аргумент используется для отображения ошибки в случае сбоя кодирования.

 

Синтаксис метода bytes()

bytes ([data_source [, encoding [, errors]]])

Все аргументы функции bytes() необязательны, как и метод bytearray(). Функции этих аргументов такие же, как и у упомянутого выше метода bytearray().

Способ преобразования ByteArray в байтах в Python будет показано ниже, используя несколько простых примеров для лучшего понимания этого процесса.

 

Пример 1: преобразование данных списка из байтового массива в байты

Когда функция bytearray() содержит только один аргумент, значением аргумента будет данные словаря или переменная. В следующем примере показано, как объект словаря может быть преобразован в объект байтового массива и как затем объект байтового массива может быть преобразован в байтовый объект. Затем первый цикл for используется для отображения значений таблицы трансляции кодов ASCII, а второй цикл for используется для отображения символов соответствующих кодов ASCII.

#!/usr/bin/env python3



# Определить список

listdata = [72, 69, 76, 76, 79]

# Распечатать содержимое списка

print(" n Значения словаря: n ", listdata)



# Инициализировать объект ByteArray , со списком

byteArrayObject = ByteArray(ListData)

# печать ByteArray, значение объекта

print(" n выходной метод ByteArray(): n" ,byteArrayObject)



# Преобразование объекта bytearray в объект 

byteObject = bytes(byteArrayObject)

# Печать значения объекта байтов

print(" n Вывод метода bytes(): n ", byteObject)



print(" n Значения байтов в формате ASCII ")

# Итерировать байтовый объект, используя цикл

for val in byteObject:

print(val,' ', end='')



print( " n Строковые значения байтов")

# Итерировать байтовый объект, используя цикл

for val in byteObject:

print(chr(val),' ', end='')

Выход

Следующий вывод появится после запуска скрипта. Здесь 72, 69, 76 и 79 — это код ASCII для символов «H», «E», «L» и «O» соответственно.

 

Пример 2: преобразование строковых данных из байтового массива в байты

В следующем примере показано преобразование объектов байтового массива в байтовые объекты строковых данных. В методе bytearray() этого скрипта используются два аргумента. Первый аргумент содержит строковое значение, а второй аргумент содержит строку кодировки. Здесь кодировка utf-8 используется для преобразования в объект байтового массива. Метод decode() используется в скрипте для преобразования байтовых объектов в строковые данные. Такая же кодировка используется во время преобразования.

#!/usr/bin/env python3



# Возьмите строковое значение

text = input("Введите любой текст: n")



# Инициализировать ByteArray объект строки и кодирование

byteArrObj = ByteArray(text, 'UTF-8')

print(" n Вывод метода bytesarray(): n ", byteArrObj)



# Конвертировать bytearray в байты

byteObj = bytes(byteArrObj)

print(" n Вывод метода bytes(): n", byteObj)

# Преобразовать байты значения в строку, используя emcoding

print(" n Строку значения байт»)

print(byteObj.Decode("UTF-8"))


 

Пример 3: преобразование целочисленных данных из байтового массива в байты

В предыдущих примерах показано преобразование массива байтов и байтов на основе словарных и строковых данных. В этом третьем примере показано преобразование массива байтов в байты на основе входных данных. Здесь входное значение преобразуется в целое число и передается в качестве аргумента через функцию bytearray(), а затем объект bytearray преобразуется в объект байтов. Нулевые значения, основанные на целочисленном числе, показаны как выходные данные объекта bytearray и bytes. Общее количество байтов подсчитывается с помощью метода len() в конце скрипта и будет равно целочисленному значению, переданному в качестве аргумента в метод bytearray().

#!/usr/bin/env python3



попробовать :

# Возьмем любое числовое значение

text = int(input("Введите любое число:"))



# Инициализировать ByteArray объект с номером

byteArrObj = bytearray(text)

print("n Вывод метода bytesarray(): n ", byteArrObj)



# Преобразование объекта

byteObj = bytes(byteArrObj)

print(" n Вывод метода bytes(): n ", byteObj)



# Распечатать размер объекта байтов

print(" n Длина объекта байтов: ", len(byteObj))

except ValueError:

print(" Введите любое число значение ")

Выход

После запуска сценария 6 используется в качестве входных данных для следующего вывода. Шесть нулевых значений отображаются как выходные данные массива байтов и байтов. Когда подсчитываются нулевые значения, отображается 6.

 

Пример 4: Создание массива байтов с помощью append() и преобразование в байты

В следующем примере показано, как объекты bytearray могут быть созданы с помощью метода append() и преобразованы в байты. Переменная arrVal объявлена здесь как объект bytearray. Затем шесть раз вызывается метод append() для добавления шести элементов в массив. Коды ASCII символов «P», «y», «t», «h», «o» и «n» равны 80, 121, 116, 104, 111 и 1120 соответственно. Они добавляются в объект bytearray. Этот объект массива позже преобразуется в объект байтов.

#!/usr/bin/env python3



# Создание ByteArray и добавить элемент, используя метод добавления()

arrVal = bytearray()

arrVal.append(80)

arrVal.append(121)

arrVal.append(116)

arrVal.append(104)

arrVal.append(111)

arrVal.append(110)



# Распечатать значения bytearray()

print(" n Вывод метода bytearray(): n", arrVal)



# Преобразование объекта bytearray в объект

byteObject = bytes(arrVal)



# Печать значения объекта байтов

print(" n Вывод метода bytes(): n ", byteObject)


 

Вывод

В этой статье показаны различные методы преобразования bytearray в байты после создания объектов bytearray. После прочтения этой статьи мы надеемся, что вы понимаете концепцию байтового массива и байтов, знаете, как преобразовать байтовый массив в байты, и сможете отображать вывод байтов в виде строки и символов.



2021-02-16T12:40:15
Python

Хотите продолжать использовать Windows 7 после 2020 года?

Microsoft больше не будет поддерживать устаревшую операционную систему, а это означает, что любой, кто использует Windows 7, может подвергнуться риску, поскольку больше не будет бесплатных исправлений безопасности.

Однако, поскольку многие люди — и компании — все еще используют или собираются купить windows 7 недорого (несколько дней назад мы сообщили, что Windows 7 действительно набирает пользователей), это может оставить многих людей в затруднительное положение, поэтому в конце прошлого года Microsoft объявила, что предлагать расширенные обновления безопасности для Windows 7 за небольшую плату.

Теперь выяснилось, кто будет иметь право на эти расширенные обновления безопасности (ESU) и сколько они будут стоить.

  • Как подготовиться к окончанию срока службы Windows 7
  • Microsoft прекращает поддержку Windows 7
  • Проблемы с Центром обновления Windows и Microsoft Store продолжаются

 

Стоимость поддержки

Microsoft, по-видимому, раскрыла, сколько будут стоить эти обновления, и они будут доступны для клиентов Enterprise и Microsoft 365, которые могут покупать расширенные обновления безопасности Windows 7 для каждого устройства.

Эти обновления предназначены для компаний, которые не могут перейти на Windows 10 до окончания срока службы Windows 7, и предназначены только для предоставления поддержки, пока предприятия готовятся к переходу.

Цена высока, и с годами стоимость растет. Таким образом, для поддержки пользователей Windows Enterprise, использующих Windows 7, в течение первого года после даты окончания срока службы (январь 2020 г. — январь 2021 г.) стоимость составляет 25 долларов США.

Эта сумма возрастает до 50 долларов за устройство на второй год (январь 2021 — январь 2022 года) и до 100 долларов на третий год (с января 2022 по январь 2023 года). Похоже, что на данный момент Microsoft надеется, что к 2023 году использование Windows 7 будет достаточно небольшим, чтобы прекратить предлагать расширенные обновления безопасности.

Поскольку это стоимость одного устройства, компании с большим количеством компьютеров под управлением Windows 7 скоро обнаружат, что это очень дорого.

Если они используют Windows 7 Pro, то эти цены еще выше: 50 долларов за поддержку в первый год, 100 долларов за второй год и 200 долларов на третий год.

Если вы не являетесь бизнес-пользователем, который хочет продолжать использовать Windows 7, теоретически вы можете зарегистрироваться в качестве корпоративного пользователя, поскольку для Windows 7 ESU не требуется минимальной покупки, но мы бы не рекомендовали это.

Гораздо дешевле — и проще — попрощаться с Windows 7 и вместо этого перейти на Windows 10.



2021-02-15T15:03:21
Microsoft

Использование UUID в Python

В 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("Целое число value:", UID.int)

# Распечатать шестнадцатеричный идентификатор

print(" Шестнадцатеричное значение:", UID.hex)



# Распечатать номер версии

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', 'zavod-gornica.ru')



# Итерировать значения кортежа, используя цикл

for hostname in hosts:

# Распечатать имя хоста

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



# Импорт модуля uuid

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

# Импорт модуля uuid

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 в соответствии с вашими потребностями в программировании.



2021-02-15T13:52:07
Python