Архив метки: Python

Работа с временным файлом в Python

Иногда нам нужно временно хранить данные в файле для временного выполнения какой-либо задачи. Например, ежемесячный отчет о продажах любой организации можно создать, сохранив данные о продажах во временном файле. Лучше сохранить данные во временном файле для создания отчета, чтобы предотвратить случайное изменение исходных данных. Временный файл также можно использовать для защиты конфиденциальных данных. Создание временного файла и выполнение таких задач легко выполняется в Python с помощью модуля tempfile . Этот модуль содержит множество функций для создания временных файлов и папок и легкого доступа к ним. В этой статье показано использование модуля tempfile в Python.

 

Создание временного файла без модуля tempfile

Задачу временного файла можно выполнить без использования модуля tempfile, создав простой файл. Для этого вы должны создать обычный файл, выполнить временные задачи и удалить файл после выполнения задач. В этом примере временный файл с именем temp.txt открывается в режиме записи, и во временный файл записывается текст. Модуль ‘ os ‘ используется здесь для чтения содержимого файла temp.txt и удаления файла после выполнения задачи.

# Импортировать модуль os

import os# Определить имя временного файла

filename = ‘temp.txt’

# Открыть файл в режиме чтения

fh = open(filename, ‘w’)

try:

# Распечатать сообщение перед записью

print(«Запись в файл >>> n»)

# Записываем строку в файл

fh.write(«Тестирование временного файла»)

# Наконец, закроем файл после записи

fh.close()

finally:

# Напечатайте сообщение перед чтением

print(«<<< Чтение из файла»)

# Запустить команду bash, чтобы прочитать файл

os.system(«cat temp.txt»)

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

print(«n»)

# Удалить временный файл

os.remove(filename)

Создание временного файла с помощью метода TemporaryFile()

В этом примере для создания временного файла используется модуль tempfile. В этом модуле есть много методов работы с временным файлом. Метод TemporaryFile() используется здесь для создания временного файла. Временный файл открывается в сценарии как текстовый файл в режиме записи. По умолчанию временный файл будет создан в текущем месте. Две строки текста записываются во временный файл с помощью метода write(). Затем вызывается метод seek(), чтобы установить указатель файла в начало файла. Содержимое файла печатается в терминале с помощью метода read(). Метод close() модуля используется для закрытия файла и автоматического удаления файла.

# Импортировать модуль временного файла

import tempfile# Объявить объект для открытия временного файла для записи

tmp = tempfile.TemporaryFile(‘w + t’)

try:

# Распечатать сообщение перед записью

print(‘Запись во временный файл …’)

# Записать данные во временный файл

tmp.write(‘AndreyEx n’)

tmp.write(‘Содержимое временного файла’)

# Перейти к началу файла

tmp.seek(0)

# Прочитать содержимое временного файла

print(‘ Чтение временного файла: n {0} ‘.format(tmp.read()))

finally:

# Автоматическое удаление временного файла

tmp.close()

Создание временного файла с использованием метода NamedTemporaryFile ()

В предыдущем примере имя временного файла создается случайным образом. Но если вы хотите установить любое собственное имя для временного файла, вы должны использовать метод NamedTemporaryFile() для создания временного файла. В этом примере временный файл открывается в режиме записи с помощью метода NamedTemporaryFile(). Далее устанавливается имя файла temp.txt. Одна строка текста записывается в файл и считывается из файла, как в предыдущем примере. Ранее упоминалось, что временный файл удаляется автоматически при вызове метода close(). После удаления здесь используется модуль ‘os’, чтобы проверить, существует ли временный файл.

# Импортировать модуль временного файла

import tempfile# Импортировать модуль os

import os

# Объявить объект для открытия временного файла для записи

tmp = tempfile.NamedTemporaryFile(‘w + t’)

# Объявить имя временного файла

tmp.name = «temp.txt»

try:

# Распечатать сообщение перед записью

print(‘Записать данные во временный файл …’)

# Записать данные во временный файл

tmp.write(‘Это временное содержимое.’)

# Перейти к началу файла

tmp.seek(0)

# Прочитать содержимое временного файла

print(‘Прочитать содержимое временного файла: n {0}’ .format(tmp.read()))

finally:

# Удалить файл автоматически

tmp.close()

# Проверить, существует ли файл,

if (os.path.exists(tmp.name)) :

print(‘Файл существует’)

else:

print(‘Файл не существует’)

Создание временного файла с префиксом и суффиксом

Все временные файлы создаются в текущем месте для предыдущих примеров. Местоположение временного файла, а также префикс и суффикс для временного файла можно указать во время создания файла с помощью метода NamedTemporaryFile(). Согласно следующему сценарию, временное имя файла будет начинаться с «tm_» и заканчиваться на «_fl». Файл будет сохранен в папке «/tmp». После создания файла временное имя файла печатается с использованием свойства name . Затем модуль ‘ os’ проверяет, удален файл или нет.

# Импортировать модуль временного файла

import tempfile# Импортировать модуль os

import os

# Объявить объект для создания временного файла с суффиксом и префиксом

tmp = tempfile.NamedTemporaryFile(mode = ‘w + t’, prefix = ‘tm_’, suffix = ‘_fl’, dir = ‘/tmp’)

# Распечатать временное имя файла

print(tmp.name)

try:

# Распечатать сообщение перед записью

print(‘Записать данные во временный файл …’)

# Записать данные во временный файл

tmp.write(‘Это временное содержимое.’)

finally:

# Автоматически удалить файл

tmp.close()

if (os.path.exists(tmp.name) == False) :

print(‘Файл удален’)

Заключение:

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



2021-01-28T09:15:56
Python

Применяем Python на практике: книги по прикладному использованию языка, изданные в 2019 году

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

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

Изучение робототехники с помощью Python

Обложка книги: "Изучение робототехники с помощью Python"

Автор: Лентин Джозеф. Язык: русский.

Автор книги, Лентин Джозеф, занимается робототехникой на коммерческом уровне. Он руководит компанией, которая разрабатывает ПО для роботов.

Эта книга — практическое руководство по созданию автономного мобильного робота. Для его проектирования и создания пользовательского интерфейса будет использоваться Python.

Книга предназначена для инженеров-робототехников. Помимо знания самого языка Python, вам пригодится хорошее знание ROS, OpenCV, OpenNI и PCL.

Прикладной анализ текстовых данных на Python

Обложка книги "Прикладной анализ текстовых данных на Python"

Авторы: Бенджамин Бенгфорт, Ребекка Билбро, Тони Охеда. Язык: русский.

Из этой книги вы узнаете о том, как применять методы машинного обучения для анализа текста. Вы будете использовать такие библиотеки Python, как Scikit-Learn, NLTK, Gensim, spaCy, NetworkX и Yellowbrick.

Книга предназначена для Python-программистов, интересующихся темами обработки естественного языка и машинного обучения. Все разбираемые примеры — на английском. Поэтому желательно, чтобы читатель владел этим языком хотя бы на базовом уровне. Разумеется, эта книга — не для начинающих питонистов. Читатель может не разбираться в машинном обучении, но навыки программирования на Python у него должны быть.

Text Analytics with Python

Обложка книги "Text Analytics with Python"

Автор: Dipanjan Sarkar. Язык: английский.

Dipanjan Sarkar — data scientist в Red Hat. Он консультировал несколько стартапов, а также некоторые солидные компании вроде Intel. Имеет диплом по data science и разработке программ, но при этом — горячий сторонник самообразования и открытых онлайн-курсов.

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

Что касается самой книги, автор старался сделать ее как можно более понятной и структурированной. Из первых глав вы узнаете, что такое естественный язык, а также — как можно обрабатывать текстовые данные при помощи Python. В последующих главах разбираются интересные проблемы анализа текста.

Цель книги — познакомить читателя со сферой анализа текста и NLP, а также вооружить необходимыми инструментами и знаниями для решения практических проблем в этих сферах.

Изучение сложных систем с помощью Python

Обложка книги "Изучение сложных систем с помощью Python"

Автор: Аллен Б. Дауни. Язык: русский.

Сложные системы — это физические и социальные системы со множеством взаимодействующих компонентов. Наука о них находится на стыке математики, информатики и естествознания.

В отличие от многих других книг о сложных системах, здесь приводятся примеры кода, математические выкладки и пояснения работы моделей. К каждой главе прилагаются блокноты Jupiter с соответствующим кодом (доступны в GitHub-репозитории), а также упражнения (с решениями).

Примеры в книге написаны на Python, так что читатель должен владеть этим языком, а также разбираться в ООП. Автор применяет библиотеки NumPy, SciPy и NetworkX, и если вы с ними знакомы, это облегчит вам чтение (но знание их не обязательно). Кроме того предполагается, что читатель не совсем далек от математики (в объяснениях применяются логарифмы и векторы).

Аллен Дауни — опытный автор: его перу принадлежат несколько бесплатных учебников по Python и науке о данных. Также он ведет блог о байесовской вероятности и статистике (Probably Overthinking It).

Вероятностное программирование на Python

Обложка книги "Вероятностное программирование на Python"

Автор: Дэвидсон-Пайлон Кэмерон. Язык: русский.

Байесовские методы используются для работы с данными и решения задач прогнозирования, логического вывода, классификации.

Обычно книги, посвященные байесовскому выводу, переполнены математикой. По словам Кэмерона, когда он сам пытался разобраться в теме, ему было невероятно сложно — и это несмотря на глубокие математические знания. Свою книгу он решил написать в другом ключе, делая упор на вероятностное программирование.

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

Practical Cryptography in Python

Обложка книги "Practical Cryptography in Python"

Авторы: Seth James Nielson, Christopher K. Monson. Язык: английский.

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

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

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

В конце глав вы найдете упражнения на закрепление материала.

DevOps in Python

Обложка книги "DevOps in Python"

Автор: Moshe Zadka. Язык: английский.

Аспекты применения Python, интересные SRE/DevOps-специалистам, довольно редко рассматриваются в книгах. Им приходится полагаться на официальную документацию и посты в блогах. Моше Задка решил заполнить этот пробел.

Из книги «DevOps in Python» вы узнаете, как использовать всю мощь языка Python для автоматизации операций.

Начинается все с разбора самой установки Python. Ведь есть не один способ сделать это! Автор рассматривает плюсы и минусы каждого.

Далее Моше Задка переходит к рассмотрению сторонних библиотек из экосистемы Python. Вы узнаете, как использовать эти пакеты, как построить рабочие процессы, когда их нужно обновлять и какие инструменты при этом используются.

Помимо библиотек, в книге рассматривается работа виртуальных машин, сервисов и контейнеров.

Книга рассчитана на специалистов, знающих Python.

Python Network Programming

Обложка книги "Python Network Programming"

Авторы: Abhishek Ratan, Eric Chou, Pradeeban Kathiravelu. Язык: английский.

Книга предназначена для Python-разработчиков и системных администраторов, желающих заняться сетевым программированием. Знание сетей не является необходимым для чтения этой книги, но знания Python нужны.

Вы научитесь создавать простые сетевые клиенты, SDN и NFV системы, а также расширять свои сети при помощи Mininet. Авторы рассказывают, как использовать Python для DevOps и как пользоваться опенсорсными инструментами для тестирования, обеспечения безопасности и анализа сетей.

К концу чтения книги вы будете знать, как разрабатывать клиенты веб-API, email-клиенты, SSH и FTP. Кроме того, вы научитесь анализировать уязвимости в безопасности сети.

Math adventures with Python

Обложка книги "Math adventures with Python"

Автор: Peter Farrell. Язык: английский.

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

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

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

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

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

Math for Programmers

Обложка книги "Math for Programmers"

Автор: Paul Orland. Язык: английский.

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

Представьте, что хорошее вино было бы одним из школьных предметов. Вероятно, на уроках вы изучали бы техники ферментации и приемы выращивания винограда. В качестве домашних заданий иногда предписывалось бы выпить 3-4 бокала вина. Иногда оно было бы вкусным, иногда — нет, но в любом случае, это скорее отвратило бы вас и от вина, и от виноделия. То же и с математикой. Традиционные методы преподавания способны отбить вкус к ней.

В этой книге, как вы уже поняли из названия, для изложения математических концепций применяется программирование на Python и реальные примеры (больше никаких вопросов «Ну и где мне это пригодится в жизни?!»).


Итак, мы рассмотрели десять книг, посвященных использованию языка Python в самых разных направлениях. Надеемся, вы найдете в этой подборке пару книг, которые вас заинтересуют.

Сообщение Применяем Python на практике: книги по прикладному использованию языка, изданные в 2019 году появились сначала на Pythonist.


Source: pythonist.ru knigi feed

Как использовать функцию NumPy arange() в Python

В библиотеке Python NumPy существует множество функций для выполнения различных типов числовых и научных операций. Создание различных типов массивов для различных целей — одно из практических применений библиотеки NumPy. В Python есть встроенная функция arange() для создания списка последовательных чисел. arange() — одна из функций создания массива библиотеки NumPy для создания массива числовых диапазонов.

 

Синтаксис

np.array  np.arange([start, ]stop, [step, ], dtype=None)

 

Эта функция может принимать четыре аргумента. Начала аргумент является необязательным, который определяет начальное значение массива. Если в функции используется начальное значение, то обязательный аргумент stop потребует определения конечного значения массива. Шаг аргумент является необязательным, что определяет разницу между элементами. Значение шага по умолчанию — 1, и значение этого аргумента не может быть 0. Четвертый аргумент, dtype, определяет тип данных элемента массива, а значение по умолчанию для этого аргумента — None . Эта функция возвращает объект массива на основе значений аргументов.

 

Использование функции arange()

Вы должны установить библиотеку Python NumPy, прежде чем практиковать примеры этого руководства. Использование функции arange() с одним аргументом, двумя аргументами и тремя аргументами было показано в этом разделе этой статьи с использованием нескольких примеров.

 

Пример-1: Использование функции arange() с одним аргументом

Когда функция arange() библиотеки NumPy используется с одним аргументом, тогда в качестве значения аргумента устанавливается верхнее значение массива. Следующий скрипт создаст массив значений диапазона NumPy и распечатает различные атрибуты массива и значения массива. 12 был использован в качестве значения аргумента функции arange(), которая создаст массив NumPy из 12 элементов, которые будут начинаться с 0 и заканчиваться до 11. Затем будут напечатаны размер, размер и тип данных массива. Значения массива будут напечатаны позже.

# Импортировать NumPy



import numpy as np



# Создать одномерный массив NumPy последовательных чисел



np_array = np.arange(12)



# Распечатать различные атрибуты массива NumPy



print('Размерность массива: ', np_array.ndim)



print('Длина массива: ', np_array.size)



print('Тип данных массива: ', np_array.dtype)



# Распечатать значения массива NumPy



print('Значения массива являются:', np_array)

Пример-2: Использование функции arange() с двумя аргументами

Когда функция arange() используется с двумя аргументами, тогда начальное и конечное значения массива будут установлены как значения аргументов. В следующем примере показано, как создать массив с нижним и верхним значениями с помощью функции arange() . Первый массив создается установкой 10 в начальное значение и 25 в конечное значение. Будет создан массив из 15 последовательных целых чисел. Затем будут напечатаны два атрибута и значения массива. Второй массив создается установкой 0,5 в начальное значение и 5,5 в конце. Будет создан массив из 5 последовательных плавающих чисел. Те же атрибуты и значения этого массива будут напечатаны позже.

# Импортировать библиотеку NumPy



import numpy as np



# Создать массив NumPy целых чисел с начальным и конечным значениями



np_array1 = np.arange(10, 25)



# Распечатать различные атрибуты массива



print('The size of the array: ', np_array1.size)



print('Тип данных массива: ', np_array1.dtype)



# Распечатать значения NumPy array



print('Значения массива являются:', np_array1)



# Создайте массив NumPy чисел с плавающей запятой с начальным и конечным значениями



np_array2 = np.arange(0.5, 5.5)



# Распечатать различные атрибуты массива



print('nРазмер массива: ', np_array2.size)



print('Тип данных массива: ', np_array2.dtype)



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



print('Значения массива являются:', np_array2)

 

Пример-3: Использование функции arange() с тремя аргументами

В следующем примере показано использование функции arange() с тремя аргументами. 10 устанавливается для аргумента start , 20 устанавливается для аргумента остановки и 2 устанавливается для значения аргумента step функции arange(). Он создаст массив из 5 целочисленных значений. Размер, тип данных и значения массива будут напечатаны в качестве вывода.

# Импортировать Numpy



import numpy as np



# Создать массив NumPy целых чисел со значениями начала, конца и шага



np_array = np.arange(10, 20, 2)



# Распечатать различные атрибуты массива



print('Размер массива:', np_array. size)



print('Тип данных массива:', np_array. dtype)



# Распечатать значения массива NumPy



print('Значения массива:', np_array)

 

Пример-4: Использование функции arange() с отрицательными значениями аргументов

В следующем примере показано использование функции arange() с отрицательными значениями аргументов. 50 установлено для аргумента start, 20 установлено для аргумента остановки, а 2 установлено для значения аргумента step функции arange(). Он создаст массив из 9 отрицательных целых чисел. Размер, тип данных и значения массива будут напечатаны в качестве вывода.

# Импортировать Numpy



import numpy as np



# Создать массив отрицательных чисел NumPy со значениями начала, конца и шага



np_array = np. arange(- 50 , - 5 , 5)



# Распечатать различные атрибуты массива



print('Размер массива:' , np_array. size)



print('Тип данных массива:' , np_array. dtype)



# Распечатать значения массива NumPy



print('Значения массива:' ,np_array)

 

Заключение

Способы создания массива NumPy с помощью функции arange() были описаны в этом руководстве с использованием нескольких примеров. Здесь показано создание массива с последовательными положительными и отрицательными числами с помощью этой функции. Мы надеемся, что цель использования функции arange() будет понятна читателям после прочтения этой статьи.



2021-01-27T05:59:03
Python

Скрипт Python для мониторинга сетевого подключения

Постоянное подключение наших устройств к Интернету становится скорее основной потребностью, чем дополнительной привилегией.

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

В сегодняшней статье мы создадим простой сетевой монитор, который постоянно отслеживает ваше подключение к Интернету, отправляя запросы ping на внешний ресурс. Сценарий, который мы создадим, также будет вести журналы, когда интернет не работает и продолжительность простоя:

 

Требования к проекту

Для этого проекта нам понадобятся только:

  • Основы программирования на Python
  • Базовое понимание компьютерных сетей.
  • Удобно пользоваться терминалом.

 

Логика проекта

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

 

Что такое время работы и простоя сети?

Когда мы говорим о работоспособности и простоях сети, мы имеем в виду период, когда сетевое соединение полностью недоступно, и, таким образом, мы не можем общаться с устройствами за пределами нашей сети. Чем дольше недоступен Интернет, тем дольше будет время простоя.

 

Как определить время простоя

Теперь, когда мы знаем, что такое простои в Интернете, вы, возможно, задаетесь вопросом: «Как нам его определить?»

Не усложняя наш код, мы можем использовать ping. Проверка связи — это метод, при котором мы постоянно проверяем связь с надежным сервером, например Cloudflare или Google DNS, а затем ждем ответа.

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

По разнице во времени мы можем отметить, когда и как долго не работал интернет.

Мы также должны быть осторожны при пинге отдельного сервера, потому что мы можем ошибочно принять пинг за DDoS-атаку, что может привести к блокировке нашего IP-адреса, что приведет к отрицательным результатам.

Вот блок-схема, объясняющая эту концепцию:

Скрипт Python для мониторинга сетевого подключения

 

Давайте теперь погрузимся в код, показывающий, как реализовать эту логику:

 

Теперь покажите мне код

Как обычно, в Python мы начинаем с импорта необходимых библиотек. Затем мы создаем файл журнала в текущем рабочем каталоге.

Мы используем библиотеку сокетов для отправки запроса на внешний IP-адрес в первой функции. В этом примере мы используем общедоступный DNS-адрес Cloudflare, который имеет очень высокое время безотказной работы. Мы также передаем порт, и, поскольку это DNS-сервер, используем порт 53.

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

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

import socket

import time

import datetime

import os

import sys

LOG_FNAME = "network.log"

FILE = os.path.join(os.getcwd(), LOG_FNAME)

def send_ping_request(host="1.1.1.1", port=53, timeout=3):

try:

socket.setdefaulttimeout(timeout)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.connect((host,port))

except OSError as error:

return False

else:

s.close()

return True

def write_permission_check():

try:

with open(FILE, "a") as file:

pass

except OSError as error:

print("Ошибка создания файла журнала")

sys.exit()

finally:

pass

def calculate_time(start, stop):

time_difference = stop - start

seconds = float(str(time_difference.total_seconds()))

return str(datetime.timedelta(seconds=seconds)).split(".")[0]

def mon_net_connection(ping_freq=2):

monitor_start_time = datetime.datetime.now()

motd = "Мониторинг сетевого подключения начат в: " + str(monitor_start_time).split(".")[0] + " Отправка запроса ping в " + str(ping_freq) + " секунды"

print(motd)



with open(FILE, "a") as file:

file.write("n")

file.write(motd + "n")

while True:

if send_ping_request():

time.sleep(ping_freq)

else:

down_time = datetime.datetime.now()

fail_msg = "Сетевое соединение недоступно в: " + str(down_time).split(".")[0]

print(fail_msg)

with open(FILE, "a") as file:

file.write(fail_msg + "n")

i = 0

while not send_ping_request():

time.sleep(1)

i += 1

if i >= 3600:

i = 0

now = datetime.datetime.now()

continous_message = "Постоянная недоступность сети: " + str(now).split(".")[0]

print(continous_message)

with open(FILE, "a") as file:

file.write(continous_message + "n")

up_time = datetime.datetime.now()

uptime_message = "Сетевое подключение восстановлено: " + str(up_time).split(".")[0]



down_time = calculate_time(down_time, up_time)

_m = "Подключение к сети было недоступно для " + down_time



print(uptime_message)

print(_m)



with open(FILE, "a") as file:

file.write(uptime_message + "n")

file.write(_m + "n")

mon_net_connection()




Заключение

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



2021-01-25T11:27:42
Python

Как разбить строку в Python

При работе со строками одной из повседневных операций является разделение строки на массив подстрок с использованием заданного разделителя.

В этой статье мы поговорим о том, как разбить строку в Python.

.split () Метод

В Python строки представлены как неизменяемые объекты str . Класс str имеет ряд строковых методов, которые позволяют управлять строкой.

Метод .split() возвращает список подстрок, разделенных разделителем. Требуется следующий синтаксис:

str.split(delim=None, maxsplit=-1)

Разделитель может быть символом или последовательностью символов, а не регулярным выражением.

В примере ниже мы разделяем строку s используя запятую ( , ) в качестве разделителя:

s = 'Sansa,Tyrion,Jon's.split(',')

Результатом является список строк:

['Sansa', 'Tyrion', 'Jon']

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

Последовательность символов также может использоваться в качестве разделителя:

s = 'Sansa::Tyrion::Jon's.split('::')

['Sansa', 'Tyrion', 'Jon']

Когда maxsplit , он ограничивает количество разделений. Если не указано или -1 , ограничение на количество разделений отсутствует.

s = 'Sansa;Tyrion;Jon's.split(';', 1)

В списке результатов будет максимальное maxsplit+1 элементов maxsplit+1 :

['Sansa', 'Tyrion;Jon']

Если delim не указан или имеет значение Null , строка будет разделена с использованием пробела в качестве разделителя. Все последовательные пробелы считаются одним разделителем. Кроме того, если строка содержит завершающие и ведущие пробелы, в результате не будет пустых строк.

Чтобы лучше проиллюстрировать это, давайте взглянем на следующий пример:

' Daenerys  Hodor Arya   Jaime Bran '.split()

['Daenerys', 'Hodor', 'Arya', 'Jaime', 'Bran']

' Daenerys  Hodor Arya   Jaime Bran '.split(' ')

['', 'Daenerys', '', 'Hodor', 'Arya', '', '', 'Jaime', 'Bran', '']

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

Выводы

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

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.



2021-01-07T20:32:08
Python

Обратный список Python

При работе со списками в Python иногда может потребоваться перевернуть элементы списка. Обратное преобразование списка означает, что первый элемент списка становится последним, второй — предпоследним, последний элемент становится первым и так далее.

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

reverse() метод

reverse() — это метод типа данных списка, который меняет местами элементы списка. Этот метод изменяет исходный список, а не создает новый.

Синтаксис метода reverse() следующий:

list.reverse()

reverse() не принимает аргументы.

Вот пример:

capitals = ['Oslo', 'Skopje', 'Riga', 'Madrid']

capitals.reverse()

print('Reversed list:', capitals)

Reversed list: ['Madrid', 'Riga', 'Skopje', 'Oslo']

функция reversed()

reversed() — это встроенная функция Python, которая возвращает обратный итератор заданного итеративного объекта. Исходный список не изменяется.

Если вы хотите перебирать элементы списка только в обратном порядке, предпочтительнее использовать функцию reversed() , так как это быстрее, чем перестановка элементов на месте`.

Синтаксис функции reversed() следующий:

reversed(seq) 

Где seq — это список, который нужно восстановить.

Ниже приведен пример использования функции reversed() для перебора элементов списка в обратном порядке:

numbers = [1, 2, 3, 4]

for i in reversed(numbers) :
    print(i)

4
3
2
1

Если вы хотите преобразовать обратный итератор в список, используйте конструктор list() :

numbers = [1, 2, 3, 4]

print(list(reversed(numbers)))

[4, 3, 2, 1]

Перевернуть список с помощью нарезки

Нотация срезов — это встроенная функция Python, которая позволяет извлекать части последовательного типа данных. Хотя это и не очень Pythonic, вы можете использовать нотацию [::-1] перевернув список:

numbers = [1, 2, 3, 4]

print(numbers[::-1])

Результатом нарезки списка является новый список, содержащий извлеченные элементы. Исходный список не изменяется.

[4, 3, 2, 1]

Выводы

Чтобы перевернуть список Python на месте, используйте метод reverse() . Если вам нужно создать только обратный итератор, используйте функцию reversed() .

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.



2021-01-05T14:24:35
Python