Полезные скрипты на python для windows

7 июня 2023

4 013

0

Время чтения ≈ 34 минуты

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

«Автоматизация — не враг, а союзник человека. Она освобождает работника от тяжелого труда, давая возможность заниматься более творческими и вдохновляющими делами»
— Роберт Нойс, американский инженер, основатель компании Intel.

Python — это мощный и универсальный язык разработки, который отлично подходит для автоматизации различных задач. Многочисленные скрипты (готовые к исполнению элементы кода), написанные для «змеиного языка» могут помочь любому пользователю, знакомому с основами программирования на Python, высвободить рабочее время от рутины.

Содержание:

  • Передача файлов
  • Мониторинг системы
  • Парсинг веб-страниц
  • Скрапинг изображений
  • Электронная почта
  • Конвертация текста в речь
  • Чтение и изменение CSV-файла
  • Конвертация PDF в CSV
  • Сжатие изображений
  • Конвертация из JSON в YAML и обратно
  • Извлечение текста из PDF
  • Обработка аудиофайлов
  • Воспроизведение музыки в случайном порядке
  • Фильтрация текста
  • Сопоставление с образцом при помощи регулярных выражений
  • Анализ данных
  • Задачи компьютерного зрения
  • Шифрование данных
  • Тестирование и отладка
  • Прогнозирование временных рядов

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

Передача файлов

Python предоставляет немало библиотек и модулей, которые можно использовать для создания сценария автоматической передачи файлов по сети или между компьютерами. В их число входят, такие инструменты, как socket, ftplib, smtplib и paramiko.

Ниже приведен пример простого скрипта Python, который использует модуль «socket» для передачи файла по сети:

import socket

# create socket
s = socket.socket()

# bind socket to a address and port
s.bind(('localhost', 12345))

# put the socket into listening mode
s.listen(5)

print('Server listening...')

# forever loop to keep server running
while True:
   # establish connection with client
   client, addr = s.accept()
   print(f'Got connection from {addr}')

   # receive the file name
   file_name = client.recv(1024).decode()

   try:
       # open the file for reading in binary
       with open(file_name, 'rb') as file:
           # read the file in chunks
           while True:
               chunk = file.read(1024)
               if not chunk:
                   break
               # send the chunk to the client
               client.sendall(chunk)

       print(f'File {file_name} sent successfully')
   except FileNotFoundError:
       # if file not found, send appropriate message
       client.sendall(b'File not found')
       print(f'File {file_name} not found')

   # close the client connection
   client.close()

Выполнение скрипта

Этот сценарий запускает сервер, который прослушивает входящие соединения по адресу «localhost» и порту «12345». Когда клиент подключается, сервер получает имя файла от клиента, а затем считывает и отправляет содержимое файла фрагментами клиенту. Если файл не найден, сервер отправляет клиенту соответствующее сообщение.

Как упоминалось выше, существуют другие библиотеки и модули, которые можно использовать для создания сценария передачи файлов на python, например, ftplib для подключения и передачи файла с использованием протокола ftp и paramiko для передачи по протоколу SFTP (протокол передачи файлов SSH). Сценарий может быть адаптирован в соответствии с конкретными требованиями или сценариями.

Мониторинг системы

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

Выполнение скрипта

import psutil

# Get the current CPU usage
cpu_usage = psutil.cpu_percent()

# Get the current memory usage
memory_usage = psutil.virtual_memory().percent

# Get the current disk usage
disk_usage = psutil.disk_usage("/").percent

# Print the collected data
print(f"CPU usage: {cpu_usage}%")
print(f"Memory usage: {memory_usage}%")
print(f"Disk usage: {disk_usage}%")

Приведенный выше скрипт использует функции «cpu_percent», «virtual_memory» и «disk_usage» из модуля «psutil» для получения данных о текущем использовании ЦП, памяти и жесткого диска соответственно.

Функция «virtual_memory» возвращает объект с различными свойствами, такими как общий объем памяти и объем используемой и свободной памяти. Функция «disk_usage» принимает в качестве аргумента путь и возвращает объект с такими свойствами, как общий объем места на диске и количество используемого и свободного места.

Клиенты не могут войти на сайт из-за DDoS? Хватит терпеть убытки!
Подключите интеллектуальную DDoS-защиту CyberFlow и забудьте о проблемах!

Парсинг веб-страниц

Автоматизация веб-скрапинга — одна из самых популярных областей применения скриптов Python. Пакеты таких библиотек, как selenium и beautifulsoup4 широко используются для извлечения данных с веб-сайтов и их хранения в структурированном формате. Например, в виде электронной таблицы или базы данных. Подобная автоматизация облегчает регулярный сбор данных для их анализа или отслеживания изменений на веб-сайте.

Выполнение скрипта

В приведенном ниже примере представлены возможности пакета BeautifulSoup:

import requests
from bs4 import BeautifulSoup

# Fetch a web page
page = requests.get("http://www.example.com")

# Parse the HTML content
soup = BeautifulSoup(page.content, "html.parser")

# Find all the links on the page
links = soup.find_all("a")

# Print the links
for link in links:
   print(link.get("href"))

Используя этот инструмент, можно найти все ссылки на странице. Метод «find» позволит найти первый элемент, а метод «find_all» находит все элементы. Также можно изменить скрипт, чтобы очищать другие типы данных или переходить на разные страницы сайта.

Скрапинг изображений

Этот скрипт Python пригодится, если нужно автоматизировать «сканирование» и выгрузку не веб-страниц целиком, а только изображений с указанных сайтов. Для его работы потребуются пакеты библиотек selenium и beautifulsoup4, которые нужно будет предварительно установить с помощью диспетчера пакетов pip следующим образом:

pip install selenium beautifulsoup4

Кроме того, потребуется загрузить драйвер Chrome, в соответствии с версией используемого браузера Chrome и ОС. В дальнейшем нужно будет ввести путь к файлу «chromedriver», который запрашивает программа.

Выполнение скрипта

Чтобы запустить скрипт, нужно открыть терминал в корневом каталоге скрипта и ввести команду:

python3 scrap-img.py

Скрипт запросит:

  • путь к драйверу Chrome, который был загружен на подготовительном шаге;
  • URL-адрес, с которого нужно загрузить изображения.
from selenium import webdriver
import requests as rq
import os
from bs4 import BeautifulSoup
import time

# path= E:\web scraping\chromedriver_win32\chromedriver.exe
path = input("Enter Path : ")

url = input("Enter URL : ")

output = "output"

def get_url(path, url):
    driver = webdriver.Chrome(executable_path=r"{}".format(path))
    driver.get(url)
    print("loading.....")
    res = driver.execute_script("return document.documentElement.outerHTML")

    return res

def get_img_links(res):
    soup = BeautifulSoup(res, "lxml")
    imglinks = soup.find_all("img", src=True)
    return imglinks

def download_img(img_link, index):
    try:
        extensions = [".jpeg", ".jpg", ".png", ".gif"]
        extension = ".jpg"
        for exe in extensions:
            if img_link.find(exe) > 0:
                extension = exe
                break

        img_data = rq.get(img_link).content
        with open(output + "\\" + str(index + 1) + extension, "wb+") as f:
            f.write(img_data)

        f.close()
    except Exception:
        pass

result = get_url(path, url)
time.sleep(60)
img_links = get_img_links(result)
if not os.path.isdir(output):
    os.mkdir(output)

for index, img_link in enumerate(img_links):
    img_link = img_link["src"]
    print("Downloading...")
    if img_link:
        download_img(img_link, index)
print("Download Complete!!")

Электронная почта

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

Выполнение скрипта

Ниже приведен пример того, как отправить электронное письмо с помощью «питоновского» модуля smtplib, клиента электронной почты и протокола SMTP (Simple Mail Transfer Protocol):

import smtplib
from email.mime.text import MIMEText

# Set the SMTP server and login credentials
smtp_server = "smtp.gmail.com"
smtp_port = 587
username = "your@email.com"
password = "yourpassword"

# Set the email parameters
recipient = "recipient@email.com"
subject = "Test email from Python"
body = "This is a test email sent from Python."

# Create the email message
msg = MIMEText(body)
msg["Subject"] = subject
msg["To"] = recipient
msg["From"] = username

# Send the email
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(username, password)
server.send_message(msg)
server.quit()

Класс «SMTP» из примера используется для создания SMTP-клиента, методы «starttls» и «login» для установки безопасного соединения, а класс «MIMEText» из модуля электронной почты для создания сообщения электронной почты в формате MIME (Multipurpose Internet Mail Extensions).

После создания сообщения электронной почты метод «send_message» объекта «SMTP» используется для отправки сообщения. Затем вызывается метод «quit», чтобы закрыть соединение с SMTP-сервером.

Конвертация текста в речь

Для этого скрипта можно использовать API облачного сервиса Text-to-Speech от Google, который позволяет разработчикам генерировать человеческую речь. API преобразует текст в аудиоформаты, например, WAV, MP3 или Ogg Opus. Он также поддерживает входные данные языка разметки синтеза речи (SSML) для указания пауз, чисел, форматирования даты и времени и других инструкций по произношению.

from pygame import mixer
from gtts import gTTS
def main():
   tts = gTTS('Like This Article')
   tts.save('output.mp3')
   mixer.init()
   mixer.music.load('output.mp3')
   mixer.music.play()
if __name__ == "__main__":
   main()

Чтение и изменение CSV-файлов

CSV (Comma Separated Values, «значения, разделенные запятыми») — распространенный формат для импорта и экспорта электронных таблиц из таких программ, как Excel. Python может читать CSV, а это означает, что он может копировать и сохранять его содержимое для выполнения других задач.

Выполнение скрипта

Приведенный ниже сценарий использования модуля csv позволит читать и распечатывать содержимое CSV-файла «customers.csv», добавляя запятые между элементами.

import csv
#replace 'customers.csv' with your filename or path to file (i.e. /Desktop/folder/file.csv)
with open('customers.csv', newline='') as csvfile:
    cust_reader = csv.reader(csvfile, delimiter=' ', quotechar='|')
    for row in cust_reader:
        print(', '.join(row))

Также можно автоматически дополнять содержимое CSV-файла без необходимости ввода новых данных вручную.

import csv
Row = ['James Smith', 'james@smith.com', 200000]
# Make sure 'customers.csv' is in your root directory, or provide path to open() method.
# pass in 'a' to append new row or 'w' to overwrite CSV file
with open('customers.csv', 'a', newline='') as csvfile:
    cust_writer = csv.writer(csvfile, delimiter=',',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    cust_writer.writerow(Row)

Конвертация PDF в CSV

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

Выполнение скрипта

Для начала нужно будет установить библиотеку tabula-py с помощью системы управления программными пакетами PIP. После установки, можно передать файл в свой проект.

import tabula

filename = input("Enter File Path: ")
df = tabula.read_pdf(filename, encoding='utf-8', spreadsheet=True, pages='1')

df.to_csv('output.csv')

Библиотека имеет функцию «read_pdf()», которая считывает PDF-файлы. Завершающим этапом автоматизации станет использование функции «to_csv()» для сохранения вывода с PDF в CSV.

Сжатие изображений

Этот скрипт позволяет уменьшить размер изображения, сохранив при этом его качество. Для этого можно использовать специализированную библиотеку PIL (Python Imaging Library). В ее функциональность входит управление изображениями, добавление фильтров, размытие, повышение резкости, сглаживание, обнаружение краев, сжатие изображений и многое другое.

import PIL
from PIL import Image
from tkinter.filedialog import *

fl=askopenfilenames()
img = Image.open(fl[0])
img.save("output.jpg", "JPEG", optimize = True, quality = 10)

Конвертация из JSON в YAML и обратно

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

JSON в YAML — выполнение скрипта

import json
import os
import sys
import yaml

# Checking there is a file name passed
if len(sys.argv) > 1:
    # Opening the file
    if os.path.exists(sys.argv[1]):
        source_file = open(sys.argv[1], "r")
        source_content = json.load(source_file)
        source_file.close()
    # Failing if the file isn't found
    else:
        print("ERROR: " + sys.argv[1] + " not found")
        exit(1)
# No file, no usage
else:
    print("Usage: json2yaml.py <source_file.json> [target_file.yaml]")

# Processing the conversion
output = yaml.dump(source_content)

# If no target file send to stdout
if len(sys.argv) < 3:
    print(output)
# If the target file already exists exit
elif os.path.exists(sys.argv[2]):
    print("ERROR: " + sys.argv[2] + " already exists")
    exit(1)
# Otherwise write to the specified file
else:
    target_file = open(sys.argv[2], "w")
    target_file.write(output)
    target_file.close()

Результат может быть отправлен на стандартный вывод или в указанный файл.

$ json2yaml.py input_file.json output_file.yaml

Но что, если нужно пойти в противоположном направлении? Не проблема — приведенный ниже скрипт преобразует файл из YAML в JSON.

YAML в JSON — выполнение скрипта

import json
import os
import sys
import yaml

# Checking there is a file name passed
if len(sys.argv) > 1:
    # Opening the file
    if os.path.exists(sys.argv[1]):
        source_file = open(sys.argv[1], "r")
        source_content = yaml.safe_load(source_file)
        source_file.close()
    # Failikng if the file isn't found
    else:
        print("ERROR: " + sys.argv[1] + " not found")
        exit(1)
# No file, no usage
else:
    print("Usage: yaml2json.py <source_file.yaml> [target_file.json]")

# Processing the conversion
output = json.dumps(source_content)

# If no target file send to stdout
if len(sys.argv) < 3:
    print(output)
# If the target file already exists exit
elif os.path.exists(sys.argv[2]):
    print("ERROR: " + sys.argv[2] + " already exists")
    exit(1)
# Otherwise write to the specified file
else:
    target_file = open(sys.argv[2], "w")
    target_file.write(output)
    target_file.close()

Результат может быть отправлен на стандартный вывод или в указанный файл.

$ yaml2json.py input_file.yaml output_file.json

Извлечение текста из PDF-файла

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

Выполнение скрипта

Установить пакет можно, запустив следующую команду в терминале:

pip install PyPDF2

Ниже приведены несколько примеров практического применения Py2PDF2.

Например, имеется многостраничный PDF, из которого нужна только первая страница. Приведенный ниже скрипт позволяет извлечь текст с первой страницы PDF-документа:

# import module PyPDF2
import PyPDF2
# put 'example.pdf' in working directory
# and open it in read binary mode
pdfFileObj = open('example.pdf', 'rb')
# call and store PdfFileReader
# object in pdfReader
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
# to print the total number of pages in pdf
# print(pdfReader.numPages)
# get specific page of pdf by passing
# number since it stores pages in list
# to access first page pass 0
pageObj = pdfReader.getPage(0)
# extract the page object
# by extractText() function
texts = pageObj.extractText()
# print the extracted texts
print(texts)

Объединение двух файлов в один

Другой вариант — нужно скопировать текст из двух PDF-файлов и объединить его в новый PDF-файл. Для этого можно использовать приведенный ниже код:

import PyPDF2
# open two pdfs
pdf1File = open('example.pdf', 'rb')
pdf2File = open('example2.pdf', 'rb')
# read first pdf
pdf1Reader = PyPDF2.PdfFileReader(pdf1File)
# read second pdf
pdf2Reader = PyPDF2.PdfFileReader(pdf2File)
# for writing in new pdf file
pdfWriter = PyPDF2.PdfFileWriter()
for pageNum in range(pdf1Reader.numPages):
    pageObj = pdf1Reader.getPage(pageNum)
    pdfWriter.addPage(pageObj)
for pageNum in range(pdf2Reader.numPages):
    pageObj = pdf2Reader.getPage(pageNum)
    pdfWriter.addPage(pageObj)
# create new pdf 'example3.pdf' 
pdfOutputFile = open('example3.pdf', 'wb')
pdfWriter.write(pdfOutputFile)
pdfOutputFile.close()
pdf1File.close()
pdf2File.close()

Обработка аудиофайлов

Pydub — пакет Python, который позволяет совершать разнообразные манипуляции со звуком, включая преобразование в различные форматы (например, wav или mp3) или выборочное увеличение/уменьшение громкости на одном аудиотреке. Pydub может сегментировать аудиофайл на миллисекундные сэмплы, что может быть особенно полезно для задач машинного обучения.

Выполнение скрипта

Pydub можно установить, введя в терминале команду Python:

pip install pydub

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

from pydub import AudioSegment

audio_file = AudioSegment.from_mp3("example.mp3")
louder_audio_file = audio_file + 18
louder_audio_file.export("example_louder.mp3", format="mp3")

Воспроизведение музыки в случайном порядке

Этот скрипт будет полезен для меломанов, не представляющих работы за компьютером без любимой музыкальной коллекции. Он случайным образом выбирает трек из папки с альбомами или сборниками, а затем воспроизводит ее с помощью модуля «os».

Выполнение скрипта

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

import random, os
music_dir = 'E:\\music diretory'
songs = os.listdir(music_dir)

song = random.randint(0,len(songs))

# Prints The Song Name
print(songs[song])  

os.startfile(os.path.join(music_dir, songs[0]))

Затем функция «startfile()» модуля «os» запускает в случайном порядке файлы треков с помощью связанного с ним приложения на основе расширения.

Фильтрация текста

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

Выполнение скрипта

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

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

# Filter Text
# Import re module
import re
# Take any string data
string = """a string we are using to filter specific items.
perhaps we would like to match credit card numbers
mistakenly entered into the user input. 4444 3232 1010 8989
and perhaps another? 9191 0232 9999 1111"""

# Define the searching pattern
pattern = '(([0-9](\s+)?){4}){4}'

# match the pattern with input value
found = re.search(pattern, string)
print(found)
# Print message based on the return value
if found:
  print("Found a credit card number!")
else:
  print("No credit card numbers present in input")

Сопоставление с образцом при помощи регулярных выражений

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

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

Например, этот скрипт позволит автоматически сопоставить любые адреса электронной почты, найденные в обрабатываемом тексте:

import re
emailRegex = re.compile(r'''(
    [a-zA-Z0-9._%+-]+     # username
    @                               # @ symbol
     [a-zA-Z0-9.-]+           # domain name
     (\.[a-zA-Z]{2,4})         # dot-something
  )''', re.VERBOSE)

# store matched addresses in an array called "matches"
matches = []
text = """
An example text containing an email address, such as user@example.com or something like hello@example.com
"""

# search the text and append matched addresses to the "matches" array
for groups in emailRegex.findall(text):
    matches.append(groups[0])

# matches => ['user@example.com', 'hello@example.com']
print(matches)

А этот скрипт Python поможет сопоставить номера телефонов в тексте:

import re

text = """
Here is an example string containing various numbers, some 
of which are not phone numbers.

Business Address
4553-A First Street
Washington, DC 20001

202-555-6473
301-555-8118
"""

phoneRegex = re.compile(r'''(
    (\d{3}|\(\d{3}\))?                 # area code
    (\s|-|\.)?                             # separator
    (\d{3})                               # first 3 digits
    (\s|-|\.)                               # separator
    (\d{4})                               # last 4 digits
    (\s*(ext|x|ext.)\s*(\d{2,5}))?    # extension
    )''', re.VERBOSE)

matches = []
for numbers in phoneRegex.findall(text):
  matches.append(numbers[0])

# matches => ['202-555-6473', '301-555-8118']
print(matches)

Анализ данных

Открытая библиотека Pandas — мощный инструмент для анализа и обработки данных на Python.

Выполнение скрипта

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

import pandas as pd

# Reading a CSV file
df = pd.read_csv("data.csv")

# Cleaning data
df.dropna(inplace=True) # Dropping missing values
df = df[df["column_name"] != "some_value"] # Removing specific rows

# Transforming data
df["column_name"] = df["column_name"].str.lower() # Changing string to lowercase
df["column_name"] = df["column_name"].astype(int) # Changing column datatype

# Analyzing data
print(df["column_name"].value_counts()) # Prints the frequency of unique values in the column

# Saving the cleaned and transformed data to a new CSV file
df.to_csv("cleaned_data.csv", index=False)

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

Задачи компьютерного зрения

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

Это очень мощная библиотека, основная специализация которой — реализация функций компьютерного зрения в реальном времени. Она предоставляет широкую функциональность, включая ввод-вывод изображений и видео, обработку изображений, анализ видео, обнаружение и распознавание объектов и многое другое.

Выполнение скрипта

Приведенный ниже скрипт обнаруживает лица на изображении:

import cv2

# Load the cascade classifier for face detection
face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")

# Load the image
img = cv2.imread("image.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# Detect faces
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)

# Draw rectangles around the faces
for (x, y, w, h) in faces:
   cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)

# Show the image

cv2.imshow("Faces", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Он начинается с загрузки каскадного классификатора детекции «face_cascade», представляющего собой предварительно обученную модель, которая может распознавать лица на изображении. Затем загружает изображение и преобразует его в оттенки серого с помощью метода «cv2.cvtColor()». Далее изображение передается методу классификатора «detectMultiScale()», который обнаруживает лица на изображении. Метод возвращает список координат обнаруженных лиц.

Затем скрипт перебирает список координат и рисует прямоугольники баундинг-боксов вокруг обнаруженных лиц, используя метод «cv2.rectangle()». Наконец, изображение отображается на экране с помощью метода «cv2.imshow()».

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

Шифрование данных

Одним самых популярных инструментов для шифрования данных в Python является библиотека cryptography. Она включает в себя как рецепты высокого уровня, так и низкоуровневые интерфейсы для общих криптографических алгоритмов, таких как симметричные шифры, дайджесты сообщений и функции получения ключей. Выполнение скрипта

Следующий пример демонстрирует, как можно зашифровать файл с помощью библиотеки cryptography:

import os
from cryptography.fernet import Fernet
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC

password = b"super_secret_password"
salt = os.urandom(16)
kdf = PBKDF2HMAC(
   algorithm=hashes.SHA256,
   iterations=100000,
   length=32,
   salt=salt,
   backend=default_backend()
)
key = base64.urlsafe_b64encode(kdf.derive(password))
cipher = Fernet(key)

# Encrypt the file
with open("file.txt", "rb") as f:
   data = f.read()

cipher_text = cipher.encrypt(data)

with open("file.txt", "wb") as f:
   f.write(cipher_text)

Скрипт начинается с создания ключа с помощью функцию получения ключа на основе пароля «PBKDF2HMAC». Функция использует алгоритм безопасного хэширования (SHA-256) и значение «соли» (salt value), генерируемое с помощью функции «os.urandom()».

Затем скрипт создает объект «Fernet», который представляет собой реализацию симметричной аутентифицированной криптографии, также известной как «секретный ключ» (secret key). После чего, cryptography считывает открытый текстовый файл, шифрует его с помощью метода «encrypt()» объекта «Fernet» и записывает зашифрованные данные в файл.

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

Тестирование и отладка

В Python существует несколько популярных библиотек и фреймворков для автоматизации тестирования и отладки, например, unittest, pytest, nose и doctest.

Выполнение скрипта

Ниже приведен пример использования библиотеки unittest для автоматизации тестирования функции Python, которая находит самую длинную палиндромную подстроку в заданной строке:

def longest_palindrome(s):
   n = len(s)
   ans = ""
   for i in range(n):
       for j in range(i+1, n+1):
           substring = s[i:j]
           if substring == substring[::-1] and len(substring) > len(ans):
               ans = substring
   return ans

class TestLongestPalindrome(unittest.TestCase):
   def test_longest_palindrome(self):
       self.assertEqual(longest_palindrome("babad"), "bab")
       self.assertEqual(longest_palindrome("cbbd"), "bb")
       self.assertEqual(longest_palindrome("a"), "a")
       self.assertEqual(longest_palindrome(""), "")

if __name__ == '__main__':
   unittest.main()

Функция «longest_palindrome» принимает строку в качестве входных данных и возвращает самую длинную палиндромную подстроку, перебирая все возможные подстроки и проверяя:

  • является ли она палиндромом;
  • больше ли ее длина, чем у предыдущей.

Скрипт определил класс «TestLongestPalindrome», который наследуется от «unittest.TestCase» и содержит несколько тестовых методов. Каждый тестовый метод использует метод «assertEqual()», чтобы проверить, равен ли вывод функции «longest_palindrome()» ожидаемому результату.

При запуске сценария вызывается функция «unittest.main()», которая запускает все методы тестирования в классе «TestLongestPalindrome». Если какой-либо из тестов не пройден (т. е. вывод функции «longest_palindrome()» не будет равен ожидаемому результату), выводится сообщение об ошибке. В нем указывается, какой тест не пройден, а также каковы были ожидаемые и фактические результаты.

Прогнозирование временных рядов

В число популярных средств для автоматизации прогнозирования будущих значений данных временных рядов в Python входят библиотеки statsmodels и prophet.

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

Выполнение скрипта

Ниже дан пример использования библиотеки prophet для прогнозирования временных рядов при обработке ежедневных данных о продажах:

import pandas as pd
from fbprophet import Prophet

# Read in data
df = pd.read_csv("sales_data.csv")

# Create prophet model
model = Prophet()

# Fit model to data
model.fit(df)

# Create future dataframe
future_data = model.make_future_dataframe(periods=365)

# Make predictions
forecast = model.predict(future_data)

# Print forecast dataframe
print(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']])

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

# Import visualization library
import matplotlib.pyplot as plt

# Plot predicted values
model.plot(forecast)
plt.show()

# Plot predicted values with uncertainty intervals
model.plot(forecast)
plt.fill_between(forecast['ds'], forecast['yhat_lower'], forecast['yhat_upper'], color='pink')
plt.show()

# Plot component of the forecast
model.plot_components(forecast)
plt.show()

В выводе:

  • Первая визуализация — «model.plot(forecast)» показывает прогнозируемые значения и исторические данные. Она дает общее представление о том, насколько хорошо модель соответствует данным.
  • Вторая визуализация — «plt.fill_between(forecast[‘ds’], forecast[‘yhat_lower’], forecast[‘yhat_upper’], color=’pink’)» показывает прогнозируемые значения с интервалами неопределенности. Это позволит увидеть, как много в предсказаниях неопределенности.
  • Третья визуализация — «model.plot_components(forecast)» показывает компоненты прогноза, такие как тенденция, сезонность и праздничные дни.

Заключение

Конечно перечисленные в обзоре скрипты Python дают лишь первоначальное представление о возможностях автоматизации «змеиного языка». Новые фреймворки и библиотеки для таких задач появляются почти каждый день. Для более глубокого погружения в тему, мы рекомендуем самостоятельно изучать официальную документацию к инструментам, а также специализированные источники, такие как шикарное руководство «Automate the Boring Stuff with Python».

А у вас есть любимые скрипты для автоматизации на Python?

Оцените материал:


[Всего голосов: 0    Средний: 0/5]

Python is a widely used high-level, general-purpose programming language.  This language can be used in web development, machine learning applications, and all cutting-edge software technology and is preferred for both beginners as well as experienced software developers. Developers spent most of their time developing or working with scripts. Python Scripts are a set of python programs that are developed to perform a specific task. 

Python Scripts for Developers

Working with these scripts offer a convenient and efficient way to automate repetitive tasks, process large amounts of data, and perform complex computations. As Python is a high-level programming language, which means that it abstracts away many of the low-level details that are involved in writing code, which makes the Scripts easier to write and maintain. With this being said let’s continue the article on the best Python Scripts to assist you to have a much easier time learning & building with Python. 

Top 12 Python Scripts for Developers to Implement

1. Password Checker

The below script checks whether the provided password is weak or strong based on the predefined constraints.

Python

import re

def check_password(password):

  if len(password) < 8:

    return False

  elif re.search('[0-9]',password) is None:

    return False

  elif re.search('[a-z]',password) is None:

    return False

  elif re.search('[A-Z]',password) is None:

    return False

  elif re.search('[@#$^&]',password) is None:

    return False

  return True

for password in ["12345678", "Abcd@1234"]:

  if(check_password(password)):

    print(password, " is a strong password.")

  else:

    print(password, "is a weak password.")

Output:

12345678 is a weak password.
Abcd@1234  is a strong password.

In the above implementation, the Scripts evaluates the password as strong only if:

  • length of the password is greater than 8.
  • password has at least 1 digit.
  • password has at least 1 upper case & lower case character.
  • password has at least 1 special character from ” @#$^&“.

Must Read: Regex in Python

2. Password encryption & decryption

The below script performs encryption and decryption of text using the cryptography package.

Python

from cryptography.fernet import Fernet

def encrypt(text, key):

    f = Fernet(key)

    encrypted_text = f.encrypt(text.encode())

    return encrypted_text

def decrypt(encrypted_text, key):

    f = Fernet(key)

    decrypted_text = f.decrypt(encrypted_text).decode()

    return decrypted_text

text = "user_text"

key = Fernet.generate_key()

encrypted_text = encrypt(text, key)

print("Encrypted text: ", encrypted_text)

decrypted_text = decrypt(encrypted_text, key)

print("Decrypted text: ", decrypted_text)

Output:

Encrypted text:  b'gAAAAABj61UjSdV92kh_ahTNK_dKgpcWHyHpAKVtbR05UWnMEE-pbYGI2E_tkDG2LOPPEt4kksfsTpXFwquVPBrETYy1foFGEg=='
Decrypted text:  user_text

In the above implementation, the encryption key is generated using the Fernet.generate_key() method and is stored in a file for future use. The encryption and decryption of text are done using the Fernet class from the cryptography package, where the text is encrypted using the encrypt() method and decrypted using the decrypt() method.

Must Read: Encryption & Decryption | python

3. Fetching current news

The below script fetches the current news from NewsAPI. Implementation can be modified depending on the use case.

Python

from newsapi import NewsApiClient

newsapi = NewsApiClient(api_key='API_KEY')

top_headlines = newsapi.get_top_headlines(language='en', country='in')

for article in top_headlines["articles"]:

  title = article["title"]

  print(f"Title: {title}\n")

Output:

Title: I-T teams at BBC's Delhi, Mumbai offices for survey as part of tax evasion investigation -
 India Today

Title: "Smriti Mandhana's Salary More Than Babar Azam's": 
WPL Auction Sees Memes Galore On Social Media - NDTV Sports

Title: Male Infertility: Can Lifestyle Changes Boost Fertility? - NDTV

Title: BREAKING| Congress Leader Moves Supreme Court For Investigation 
Against Adani Group Based On Hindenburg... - Live Law - Indian Legal News

Title: WPI inflation cools to 24-month low of 4.73% in January | Mint - Mint

In the above implementation, the script makes use of newsapi-python package to fetch the current news. The script loops through each article in the response and prints the title of each article. Note that you will need to obtain an API key from the News API website in order to use the API. 

4. Sending Emails

The below script uses the `SMTP library to send an email to the provided receiver/’s. Implementation can be modified depending on the use case.

Python

import smtplib

def send_email(sender, receiver, password, subject, message):

    server = smtplib.SMTP('smtp.gmail.com', 587)

    server.ehlo()

    server.starttls()

    server.ehlo()

    server.login(sender, password)

    message = f"Subject: {subject}\n\n{message}"

    server.sendmail(sender, receiver, message)

    print("Email sent!")

    server.quit()

sender = "SENDER_ADDRESS"

receiver = "RECEIVER_ADDRESS"

password = "APP_PASSWORD"

subject = "Hello From GFG"

message = "Message Body"

In the above implementation, the script takes the sender and the receiver’s details as well as the message subject and body. The script then connects to Gmail’s SMTP server, formats the message, and sends it via the sendmail() method. Finally, the script prints a message indicating that the email was successfully sent and disconnects from the SMTP server.

Must Read: smtplib in Python

5. URL Shortener

The below script uses ‘TinyURL API’  to shorten the provided URL.

Python3

Output:

The shortened URL is: https://tinyurl.com/2bqwr25r

In the above implementation, the shorten_url() function takes the URL that is to be shortened and returns the shortened URL. Inside the shorten_url() function requests library is used to make a GET request to the TinyURL API. The ‘response.text’ attribute from the response received by the API contains the shortened URL.

Must Read: URL shortener in Python

6. Generating a QR code for the data

The below script uses ‘qrcode’ library in Python, to generate the QR code of the provided data.

Python3

import qrcode

def generate_qr_code(data):

    qr = qrcode.QRCode(version=1, box_size=10, border=5)

    qr.add_data(data)

    qr.make(fit=True)

    img = qr.make_image(fill_color="black", back_color="white")

    img.save("qr_code.png")

    print("QR code generated!")

data = 'Data to be encoded'

generate_qr_code(data)

Output:

In the above implementation, the generate_qr_code() function generates and saves the QR code for the provided data. Inside the generate_qr_code() function, it first creates a QRCode object, adds data to it, and then generated the image for the QRCode using make_image() method. The image is then saved by the name of “qr_code.png”. Finally “QR code generated!” message is printed, indicating the successful execution of the script.

Must Read: QRCode in Python

7. Text to Speech

The below script uses the ‘gTTg’ library in python, is to convert the provided text into a speech format.

Python3

from gtts import gTTS

import os

def say(text):

  tts = gTTS(text=text, lang='en')

  tts.save("geeks.mp3")

  os.system("mpg321 geeks.mp3")

say("Hello, Geeks for Geeks!")

In the above implementation, the say() function takes in the text to be converted and input. The text and language of the text are then passed as parameters to the gTTS() function. The resulting speech is then saved to an mp3 file “geeks.mp3“. Finally, using the mpg321 command line tool, the os.system() function is used to play the mp3 file.

Must Read: Text to Speech in Python

8. Convert jpg to png (and vice-versa)

The below script uses the ‘pillow’ library in python, to convert an Image (.jpg) file to .png file ( and vice-versa ) in Python.

Python3

from PIL import Image

def jpg_to_png(IMG_PATH):

  img = Image.open(IMG_PATH).convert('RGB')

  img.save("Image_1.png", "PNG")

def png_to_img(PNG_PATH):

  img = Image.open(PNG_PATH).convert('RGB')

  img.save("Image_1.jpg", "JPEG")

png_to_img("file.png")

jpg_to_png("Image.jpg")

Output:

In the above implementation, the script defines 2 functions one for converting jpg to png and another one for converting png to jpg. Initially, the Image class from the PIL library is imported, then 2 functions are defined which tend to follow a similar approach wherein firstly,  the image file (IMG_PATH) is opened using the Image.open() method. The resulting image object is then saved as a PNG/JPG file using the img.save() method. The method also has a second parameter as “PNG”/”JPEG” to specify the format.

Must Read: PIL in Python

9. Convert CSV to excel

The below script uses the ‘pandas’ library in python, to convert a CSV to an Excel file in Python.

Python3

import pandas as pd

def csv_to_excel(FILE_PATH):

  df = pd.read_csv(FILE_PATH)

  df.to_excel("file.xlsx", index=False)

try:

    csv_to_excel("disk_usage.csv")

    print("File Created")

except:

    print("Something wrong")

Output:

File Created

In the above implementation, after importing the pandas library, the csv_to_excel() function is defined which takes in the CSV file path as the input. The CSV file (“gfg.csv”) is read into a pandas DataFrame using the read_csv() method. The resulting DataFrame is then saved to an Excel file using the to_excel() method, which takes  “file.xlsx” as the first argument to specify the name of the Excel file, and index=False to exclude the DataFrame index from the output.

Must Read: CSV to Excel in Python

10. Extracting data from phone number

The below script uses the ‘phonenumbers’ library in python, to extract details about the phone number in Python.

Python3

import phonenumbers

from phonenumbers import timezone, geocoder, carrier

def get_phone_data(number):

  phoneNumber = phonenumbers.parse(number)

  return {

      "baisc-data": phoneNumber,

      "time-zone": timezone.time_zones_for_number(phoneNumber),

      "career": carrier.name_for_number(phoneNumber, 'en'),

      "is_valid": phonenumbers.is_valid_number(phoneNumber),

      "is_possible": phonenumbers.is_possible_number(phoneNumber)

  }

print(get_phone_data("+91XXXXXXXXXX"))

Output:

{'baisc-data': PhoneNumber(country_code=91, national_number=9********, extension=None, 
italian_leading_zero=None, number_of_leading_zeros=None, country_code_source=0, 
preferred_domestic_carrier_code=None), 'time-zone': ('Asia/Calcutta',),
 'career': 'Aircel', 'is_valid': True, 'is_possible': True

In the above implementation, the script first imports all the necessary libraries and classes required to extract the data. The function get_phone_data() takes a phone number as an argument and uses the parse() method from the phonenumbers library to parse the phone number into a phoneNumber object. The function returns an object which contains basic details like country code and extracted national number, the time zone to which the number belongs, the career name of the number, a boolean value that indicates if the number is valid, and another boolean value that indicates if the number is possible.

Must Read: Phonenumbers Module in Python

11. Fetching Crypto Currency Price

The below script uses ‘Alpha Vantage’ API to fetch the data about the current Crypto price in python. The implementation can be modified to get information about stocks, forensics as well as cryptocurrencies

Python3

import requests

API_KEY = "YOUR_API_KEY"

def get_current_price(SYMBOL):

  response = requests.get(url)

  data = response.json()  

  return float(data["Realtime Currency Exchange Rate"]["5. Exchange Rate"])

symbol = "BTC"

print("The current price of",symbol,"is",get_current_price("BTC"))

Output:

The current price of BTC is 21804.17

In the above implementation, the script defines a function get_current_price() that takes a cryptocurrency symbol (i.e. “BTC”) as an input and returns its current price in US dollars. The function starts by constructing an API URL for the Alpha Vantage API, which includes the cryptocurrency SYMBOL, and an API key stored as the API_KEY constant. After making an API request to the Alpha Vantage API, the response from the API is stored in the response variable, which is then converted to a Python dictionary using the json() method.  The cryptocurrency price is then extracted from the dictionary using keys such as “Realtime Currency Exchange Rate” and “5. Exchange Rate”, and returned by the get_current_price function.

12. GeoCoding and Reverse GeoCoding

The following script performs geocoding and reverse-geocoding with the help of the geopy library in python.

Python3

from geopy.geocoders import Nominatim

def print_data(location):

  print("Address: ",location.address)

  print("Latitude: ", location.latitude)

  print("Longitude: ",location.longitude)

geolocator = Nominatim(user_agent="gfg_app")

def geocoding(address):

  location = geolocator.geocode(address)

  print_data(location)

def rev_geocoding(latitude_longitude):

  location = geolocator.reverse(latitude_longitude)

  print_data(location)

geocoding("175 5th Avenue NYC")

rev_geocoding("52.509669, 13.376294")

Output:

Address:  Flatiron Building, 175, 5th Avenue, Manhattan Community Board 5,
         Manhattan, New York County, City of New York, New York, 10010, United States
Latitude:  40.741059199999995
Longitude:  -73.98964162240998
Address:  Steinecke, Potsdamer Platz, Tiergarten, Mitte, Berlin, 10785, Deutschland
Latitude:  52.5098134
Longitude:  13.37631790998454

In the above implementation, the script uses the geopy library to perform geocoding and reverse geocoding operations. The script defines two functions geocoding() and rev_geocoding() to perform these two operations. The geocoding() function takes an address as an input and uses the Nominatim class from the geopy library to perform geocoding. The rev_geocoding() function takes latitude and longitude coordinates as input and performs reverse geocoding.  Both functions use the print_data() function to display the results of the geocoding/reverse geocoding operations, including the address, latitude, and longitude.

Must Read: geopy in Python

Conclusion

Python is a versatile and widely-used programming language, making it a great choice for developers to implement scripts for a variety of purposes. This article highlights some of the most useful and practical scripts that developers can use to automate tasks, process data, and perform various functions. Whether you are a beginner or an experienced developer, these scripts provide a good starting point for leveraging the power of Python. Finally, the best script for a specific task will depend on the project’s specific requirements and goals, so it’s critical to evaluate and customize these scripts as needed to fit your needs.

FAQs

1. What is Python and what is it used for?

Python is a high-level, interpreted programming language that was first released in 1991.  It’s used for a variety of tasks, including web development, data analysis, machine learning, scientific computing, and more.

2. What is a Python Script?

Python scripts are programs written in Python. The Python interpreter runs it line by line and can be used to automate tasks, process data, and perform various functions.

3. How to run a Python script?

You can run a Python Script by opening the terminal or command prompt, navigating to the directory where the script is located, and typing “python script.py” (where “script.py” is the name of your script).

Amazing-Python-Scripts

forthebadge
forthebadge
forthebadge
forthebadge

GitHub issues
GitHub issues closed
GitHub pull requests
GitHub pull requests GitHub repo size
Lines of Code

📑 Introduction

A curated collection of Amazing Python scripts from Basics to Advance with automation task scripts. This is your Personal space to find or add any new script
that can make Life Easier for you, as a Developer, and find a utility of coding to burst out of boredom. Get started with coding exhilarating scripts that you can use to download PDFs from an Online Source or just to randomly like everyone’s Instagram Post.

📃 Scripts Available

👨🏻‍💻 How to get started?

You can refer to the following articles on basics of Git and Github and also contact the Project Mentors, in case you are stuck:

  • Forking a Repo
  • Cloning a Repo
  • How to create a Pull Request
  • Getting started with Git and GitHub

📝 How to Contribute?

  • Take a look at Contributing Guide
  • Take a look at the Existing Issues or create your Issues!
  • Wait for the Issue to be assigned to you after which you can start working on it.
  • Fork the Repo and create a Branch for any Issue that you are working upon.
  • Create a Pull Request which will be promptly reviewed and suggestions would be added to improve it.
  • Add Screenshots to help us know what this Script is all about.

✨ Contributors

Thanks go to these Wonderful People 👨🏻‍💻: 🚀 Contributions of any kind are welcome!

🌟 Stargazers Over Time 🌟

Stargazers over time

License

License: MIT

Terms and conditions for use, reproduction and distribution are under the MIT License.

Happy Coding 👨‍💻

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

Создание веб-роботов

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

# pip install selenium
import time
from selenium import webdriver
from selenium.webdriver.common.keys 
import Keysbot = webdriver.Chrome("chromedriver.exe")
bot.get('http://www.google.com')
search = bot.find_element_by_name('q')
search.send_keys("@codedev101")
search.send_keys(Keys.RETURN)
time.sleep(5)
bot.quit()

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

# pip install pillow
from PIL import Image,ImageFilter
from PIL import ImageEnhance
im = Image.open('img.jpg')
# Choose your filter
# add Hastag at start if you don't want to any filter below
en = ImageEnhance.Color(im)
en = ImageEnhance.Contrast(im)
en = ImageEnhance.Brightness(im)
en = ImageEnhance.Sharpness(im)# result
en.enhance(1.5).show("enhanced")

Получите тексты песен

Этот продвинутый скрипт покажет вам, как получить текст любой песни. Сначала вы должны получить бесплатный API-ключ на сайте Lyricsgenius, а затем выполнить следующий код. Этот продвинутый скрипт покажет вам, как получить текст любой песни. Сначала вы должны получить бесплатный API-ключ на сайте Lyricsgenius, а затем выполнить следующий код.

# pip install lyricsgenius
import lyricsgenius
api_key = "xxxxxxxxxxxxxxxxxxxxx"
genius = lyricsgenius.Genius(api_key)
artist = genius.search_artist("Pop Smoke", 
max_songs=5,sort="title")
song = artist.song("100k On a Coupe")
print(song.lyrics)

Получение данных Exif для фотографий

Используйте модуль Python Pillow для получения Exif-данных любой фотографии. Ознакомьтесь с кодом, приведенным ниже. Я предлагаю два метода извлечения Exif-данных из фотографий.

# Get Exif of Photo
# Method 1
# pip install pillow
import PIL.Image
import PIL.ExifTags
img = PIL.Image.open("Img.jpg")
exif_data = 
{
    PIL.ExifTags.TAGS[i]: j
    for i, j in img._getexif().items()
    if i in PIL.ExifTags.TAGS
}
print(exif_data)
# Method 2
# pip install ExifRead
import exifread
filename = open(path_name, 'rb')
tags = exifread.process_file(filename)
print(tags)

Поиск в Google

Вы можете извлечь URL Retargeting из поисковой системы Google, установить следующий модуль упоминания и следовать коду.

# pip install google
from googlesearch import search
query = "Medium.com"
for url in search(query):
    print(url)

Преобразование: шестнадцатеричная система в RGB

Скрипт просто преобразует шестнадцатеричное число в RGB. Посмотрите пример кода ниже.

# Conversion: Hex to RGB
def Hex_to_Rgb(hex):
    h = hex.lstrip('#')
    return tuple(int(h[i:i+2], 16) for i in (0, 2, 4))
print(Hex_to_Rgb('#c96d9d'))  # (201, 109, 157)
print(Hex_to_Rgb('#fa0515')) # (250, 5, 21)

Конвертация фотографий в формат Cartonize

Этот простой продвинутый скрипт конвертирует ваши фотографии в формат Cartonize. Посмотрите пример кода ниже и попробуйте.

# pip install opencv-python
import cv2
img = cv2.imread('img.jpg')
grayimg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
grayimg  = cv2.medianBlur(grayimg, 5)
edges = cv2.Laplacian(grayimg , cv2.CV_8U, ksize=5)
r,mask =cv2.threshold(edges,100,255,cv2.THRESH_BINARY_INV)
img2 = cv2.bitwise_and(img, img, mask=mask)
img2 = cv2.medianBlur(img2, 5)
cv2.imwrite("cartooned.jpg", mask)

Тестирование скорости с помощью Python

Этот продвинутый скрипт поможет вам протестировать скорость интернета с помощью Python. Просто установите модуль тестирования скорости и выполните следующий код.

# pip install pyspeedtest
# pip install speedtest
# pip install speedtest-cli
#method 1
import speedtest
speedTest = speedtest.Speedtest() 
print(speedTest.get_best_server())
#Check download speed
print(speedTest.download())
#Check upload speed
print(speedTest.upload())
# Method 2
import pyspeedtest
st = pyspeedtest.SpeedTest()
st.ping()
st.download()
st.upload()

Состояние сайта

Вы можете использовать Python, чтобы проверить, нормально ли работает сайт. Проверьте следующий код, он отображает 200, что означает, что сайт запущен. Если он отображает 404, это означает, что сайт закрыт.

# pip install requests
#method 1
import urllib.request
from urllib.request import Request, urlopenreq = Request('https://medium.com/@pythonians', headers={'User-Agent': 'Mozilla/5.0'})
webpage = urlopen(req).getcode()
print(webpage)  # 200
# method 2
import requests
r = requests.get("https://medium.com/@pythonians")
print(r.status_code) # 200

Извлечение текста OCR из изображений

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

Примечание: Вы должны загрузить файл tesseract.exe с Github.

# pip install pytesseract
import pytesseract
from PIL import Image
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
t=Image.open("img.png")
text = pytesseract.image_to_string(t, config='')
print(text)

Получить версию Windows

Этот простой скрипт поможет вам получить полную версию окна, которое вы используете в данный момент.

# Window Versionimport wmi
data = wmi.WMI()
for os_name in data.Win32_OperatingSystem():
  print(os_name.Caption)
# Microsoft Windows 11 Home

Преобразование PDF в изображение

Используйте следующий код для преобразования всех страниц Pdf в изображения.

# PDF to Images
import fitz
pdf = 'sample_pdf.pdf'
doc = fitz.open(pdf)
for page in doc:
    pix = page.getPixmap(alpha=False)
    pix.writePNG('page-%i.png' % page.number)

Очитска корзины для мусора

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

# pip install winshell
import winshell
try:
    winshell.recycle_bin().empty(confirm=False, /show_progress=False, sound=True)
    print("Recycle bin is emptied Now")
except:
    print("Recycle bin already empty")

Просмотры: 1 192

#Руководства


  • 0

Короткие программы на Python — первый шаг к реальной магии кода.

Darshan Patel / Unsplash / Pixabay / Pexels / Colowgee для Skillbox Media

Цокто Жигмытов

Кандидат философских наук, специалист по математическому моделированию. Пишет про Data Science, AI и программирование на Python.

Веб-разработка и научные вычисления, роботы и Data Science — Python повсюду. На нём пишут и масштабные проекты, и короткие программы (скрипты, или сниппеты), полезные в повседневных рабочих и учебных задачах.

Собрали для вас коллекцию таких небольших «заклинаний». Основной принцип: минимум строк кода, в котором можно разобраться максимум за полминуты. Сову из Хогвартса мы не гарантируем, но удивить однокашников, коллег и интервьюеров, уверены, у вас получится. Вперёд!

Внимание: устное произнесение заклинаний в текущей версии Python не поддерживается. Вам потребуется компьютер, интерпретатор и код.

Кадр: фильм «Гарри Поттер и философский камень»

Скрипт проверяет, являются ли две строки анаграммами друг друга. Иными словами, не получена ли одна строка перестановкой символов другой строки.

from collections import Counter


def anagram(first, second):
    return Counter(first) == Counter(second)

anagram("пират", "тапир")
>>> True

Используется Counter из библиотеки collections — это разновидность словаря, используемая для подсчёта элементов в итерируемых объектах: списках, кортежах, словарях, строках.

Подробнее об этой замечательной библиотеке читайте в нашей статье.

Этот скрипт используется для измерения количества памяти, потребляемой любым объектом в Python: переменной, функцией, классом.

import sys


variable = 30 

print(sys.getsizeof(variable)) 
>>> 24

Обратите внимание, что учитывается только та память, которую занимает сам объект, а не те объекты, на которые он, возможно, ссылается. Размер памяти возвращается в байтах.

Метод для определения длины строки в байтах. Это не то же самое, что размер объекта из скрипта выше.

def byte_size(string):
    return(len(string.encode('utf-8')))
   
byte_size('Я люблю Python!') 
>>> 11  

print(sys.getsizeof('Я люблю Python!'))
>>> 104 

byte_size('😀')
>>> 4

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

Этот код нарезает список на списки меньшего размера, которые собраны снова в список. Размер надо задать заранее.

def chunk(list, size):
    return [list[i:i+size] for i in range(0, len(list), size)]


lst = [i for i in range(25)]


chunk(lst, 7)
>>> [[0, 1, 2, 3, 4, 5, 6], 
    [7, 8, 9, 10, 11, 12, 13],  
    [14, 15, 16, 17, 18, 19, 20],  
    [21, 22, 23, 24]]

Как видим, последний список получился короче: 4 элемента вместо 7. Проверьте, что будет, если размер нарезаемых списков задать больше, чем составляет длина начального списка.

Этот скрипт удаляет «ложные» значения (False, None, 0 и пустую строку ‘ ‘) из списка. Используется встроенная функция filter(): c параметром None на первом месте она удалит из списка lst все значения, которые не вернут True по умолчанию.

def compact(lst):
    return list(filter(None, lst))
 
compact([0, 1, False, None, 2, '', 3, 'a', 's', 34])
>>> [1, 2, 3, 'a', 's', 34]

Проверить вручную какое-либо значение на True/False можно с помощью функции bool(): bool(0) вернёт False, но bool(‘0’) уже будет True, так как это непустая строка.

Примеры использования функции filter() можно найти здесь.

В простейшем случае двумерная матрица может быть задана списком из нескольких списков одинаковой длины, которые представляют собой строки матрицы. Если вам требуется «повернуть на 90 градусов» такую матрицу или превратить строки в столбцы (транспонировать, как говорят математики), то вот короткий код:

array = [['a', 'b'], ['c', 'd'], ['e', 'f']]
transposed = list(zip(*array))
print(transposed) 
>>> [('a', 'c', 'e'), ('b', 'd', 'f')]

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

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

def deep_flatten(xs):
    flat_list = []
    [flat_list.extend(deep_flatten(x)) for x in xs] if isinstance(xs, list) else flat_list.append(xs)
    return flat_list

deep_flatten([1, [2], [[3, [1], 4], 5]]) 
>>> [1, 2, 3, 1, 4, 5]

В третьей строке код проверяет, не является ли элемент списком. Если да, то использует метод extend() для расширения этим элементом итогового списка, если нет — то присоединяет его как одиночный элемент методом append().

Также в этой строке функция вызывает сама себя и, в случае списков, состоящих из списков, «проваливается» в них до тех пор, пока не доберётся до элементов, не являющихся списками. Это называется рекурсией.

Этот простой скрипт проверяет, содержатся ли в списке повторяющиеся значения (дубликаты). Используется свойство множеств set, которые могут содержать только уникальные элементы.

def has_duplicates(lst):
    return len(lst) != len(set(lst))

x = [1,2,3,4,5,5]
y = [1,2,3,4,5]

has_duplicates(x) 
>>> True
has_duplicates(y) 
>>> False

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

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

# прямой -- работает во всех версиях Python 3.*
def merge_two_dicts(a, b):
    c = a.copy()   # создаёт копию первого словаря 
    c.update(b)    # обновляет копию словаря а словарём b
    return c

a = { 'x': 1, 'y': 2}
b = { 'y': 3, 'z': 4}

print(merge_two_dicts(a, b)) 
>>> {'y': 3, 'x': 1, 'z': 4}

# современный -- работает в версиях Python 3.5 и выше
def merge_dictionaries(a, b):
    return {**a, **b}

a = { 'x': 1, 'y': 2}
b = { 'y': 3, 'z': 4}

print(merge_dictionaries(a, b)) 
>>> {'y': 3, 'x': 1, 'z': 4}

Обратите внимание на то, что значения итогового словаря будут зависеть от порядка исходных словарей в функциях: если переставить местами словари a и b, значение ключа ‘y’ изменится на 2.

Этот короткий скрипт вернёт элемент, чаще всего встречающийся в списке.

def most_frequent(list):
    return max(set(list), key = list.count)  

numbers = [1,2,1,2,3,2,1,4,2]
most_frequent(numbers)
>>> 2 

Используются продвинутые параметры встроенной функции max():

  • первым аргументом она получает множество из элементов списка (помним, что в множестве все элементы уникальны);
  • затем применяет к каждому из них функцию count, подсчитывающую, сколько раз элемент встречается в списке;
  • после этого возвращает элемент множества, который имеет больше всего «попаданий».

В качестве аргумента можно использовать списки, кортежи и строки.

Простой вариант этого кода проверяет, является ли слово без пробелов и знаков препинания, написанное в одном регистре, палиндромом.

def palindrome(a):
    return a == a[::-1]

palindrome('казак') 
>>> True

Более сложный вариант, который сможет проверить строку «А роза упала на лапу Азора», предлагаем написать самостоятельно. Общая идея: свести сложную строку к простой, хоть и длинной ‘арозаупаланалапуазора’. Вам пригодятся функции строк .lower(), .join(), а также, возможно, преобразование строки в список.

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

from random import shuffle



foo = [1, 2, 3, 4]

shuffle(foo) 


print(foo) 
>>> [3, 1, 2, 4]

Подробнее про библиотеку random и случайные числа в Python читайте в нашей статье.

Этот код получает две даты (начальную и конечную) и создаёт список из дат между ними, включая начальную и исключая последнюю.

from datetime import timedelta, date



def daterange(start, end):
    return [start + timedelta(n) for n in range(int((end - start).days))]

daterange(date(2020, 10, 1), date(2020, 10, 5))
>>> [datetime.date(2020, 10, 1),
     datetime.date(2020, 10, 2),
     datetime.date(2020, 10, 3),
     datetime.date(2020, 10, 4)]

Для получения дней между начальной и конечной датой используется datetime.timedelta.days.

Превращает целое число в список его цифр.

def digitize(n):
    return list(map(int, str(n)))

digitize(123) 
>>> [1, 2, 3]

Функция map() принимает желаемый тип выходных данных (в нашем случае это int, целые числа) и итерируемый объект (строку, список или кортеж), элементы которого можно превратить в элементы этого типа. После этого другая функция list() преобразует результат в список.

Преобразует число в обычной десятичной («арабской») записи в форму римского числа. Работает со значениями от 1 до 3999 включительно, возвращает строку (str).

def to_roman_numeral(num):
    lookup = [
              (1000, 'M'),
              (900, 'CM'),
              (500, 'D'),
              (400, 'CD'),
              (100, 'C'),
              (90, 'XC'),
              (50, 'L'),
              (40, 'XL'),
              (10, 'X'),
              (9, 'IX'),
              (5, 'V'),
              (4, 'IV'),
              (1, 'I'),
              ]
    res = ''
    for (n, roman) in lookup:
        (d, num) = divmod(num, n)
        res += roman * d
    return res


to_roman_numeral(3) 
>>> 'III'

to_roman_numeral(11) 
>>> 'XI'

to_roman_numeral(1998)
>>> 'MCMXCVIII'

Сначала создаётся список кортежей вида (число, его римская запись). Далее цикл бежит по нему и с помощью функции divmod() производит целочисленное деление с остатком, меняя входящее число на остаток. Соответствующие результаты деления умножаются на строку римской записи и присоединяются к итоговой строке res.

Составление и изучение таких микропрограмм помогает лучше понять типы данных в Python, узнать о свойствах и параметрах функций. На сайте 30 seconds of code есть ещё больше коротких программ как для Python, так и для других языков программирования.

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

На курсах «Профессия Python-разработчик» вы узнаете, насколько полезными могут быть такие небольшие программы, сниппеты и скрипты. Вы научитесь не только колдовать красиво решать задачи с их помощью, но и воплощать гораздо более сложные проекты. Приходите!


Жизнь можно сделать лучше!
Освойте востребованную профессию, зарабатывайте больше и получайте от работы удовольствие. А мы поможем с трудоустройством и важными для работодателей навыками.

Посмотреть курсы

  • Полезные команды для windows 10 в командной строке
  • Полезные программы на ноутбук windows 10
  • Полная информация о системе windows 10
  • Пойдет ли far cry 6 на windows 7
  • Полезные команды для cmd windows 10