Python  —  один из моих любимых инструментов для написания кода. Это язык программирования “высокого уровня”, и он обладает множеством полезных свойств и возможностей. Высокоуровневые языки обычно автоматизируют многие функции, то есть в 5 строках Python можно сделать то же самое, что в 50 строках Java.

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

Примечание: весь код из примеров был протестирован и в настоящее время работает с Python 3.11.


Генератор паролей

import string
from random import *
characters = string.ascii_letters + string.punctuation + string.digits
password = "".join(choice(characters) for x in range(randint(8, 16)))
print(password)

Программный поиск Google

from googlesearch import search
query = "Graham Zemel"
for url in search(query):
print(url)

Перед запуском требуется установить библиотеку Python “google” (pip3 install google в командной строке).

Автоматизированный бот для браузера

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

bot = webdriver.Chrome("chromedriver.exe")
bot.get('https://grahamzemel.com')

search = bot.find_element(By.XPATH, '/html/body/div[2]/div[6]/div/div/main/div/div[3]')
# полезный метод:
# search.send_keys("Hello World")
search.click()
time.sleep(5)
# bot.quit()

Перед запуском требуется установить библиотеку Python “selenium” (pip3 install selenium в командной строке).

Создание пользовательских модулей

# Нахождение текушего пути скрипта Python
import sys
print(sys.path)

# пример my_module: '/Users/grahamzemel/my_module' (не нужно включать '.py')
import my_module
my_module.my_function()

Создание фейковых данных

import pandas as pd
from faker import Faker

# Создание объекта
fake = Faker()

# Генерация данных
fake.name()
fake.text()
fake.address()
fake.email()
fake.date()
fake.country()
fake.phone_number()
fake.random_number(digits=5)

# Создание датафрейма
fakeDataframe = pd.DataFrame({'date':[fake.date() for i in range(5)],
'name':[fake.name() for i in range(5)],
'email':[fake.email() for i in range(5)],
'text':[fake.text() for i in range(5)]})

print(fakeDataframe)

Для установки зависимостей (библиотеки “pandas” и “faker”) выполните шаги, перечисленные в вышеуказанных инструментах.

Красиво отформатированные строки

number = 1234.56
percentage = 0.33
big_number = 149839020429482

print(f'No formatting: {number}' # Не требует объяснений
f'\nVariable name: {number = }' # Не требует объяснений
f'\nConverted to two decimal place: {number:.2f}' # Можете выбрать любое число
f'\nChanging wide characters to 30: {number:30}' # Ширина поля составит 30 символов
f'\nAlign response to center: {number:^30}' # Выравнивание по левому краю = меньше 30 | выравнивание по правому краю = больше 30
f'\nFill white spaces: {number:=^30}' # Заполните белые пробелы любыми символами
f'\nPrinting percent: {percentage_number:.2%}' # Умножьте на 100 и добавьте символ %
f'\nTwo decimal places w/ comma: {high_number:,.2f}'
f'\nTwo decimal places w/ scientific notation: {high_number:.2e}'
)

Индикатор выполнения TQDM (более продвинутая версия)

import pandas as pd
import numpy as np
from tqdm import tqdm

# Сгенерируйте датафрейм со случайными числами формой 1000 x 1000
df = pd.DataFrame(np.random.randint(0, 100, (100000, 1000)))

# Зарегистрируйте `pandas.progress_apply` в `tqdm`
tqdm.pandas(desc='Processing Dataframe')

# Добавьте 3 к каждому значению, а затем сделайте куб для всего датафрейма
df.progress_apply(lambda x: (x+3)**3)

Результат:

Processing Dataframe: 100%|██████████| 1000/1000 [00:02<00:00, 336.21it/s]

Конвертер алфавита NATO

import sys

nato_alphabet = {
'a': 'alpha',
'b': 'bravo',
'c': 'charlie',
'd': 'delta',
'e': 'echo',
'f': 'foxtrot',
'g': 'golf',
'h': 'hotel',
'i': 'india',
'j': 'juliet',
'k': 'kilo',
'l': 'lima',
'm': 'mike',
'n': 'november',
'o': 'oscar',
'p': 'papa',
'q': 'quebec',
'r': 'romeo',
's': 'sierra',
't': 'tango',
'u': 'uniform',
'v': 'victor',
'w': 'whiskey',
'x': 'x-ray',
'y': 'yankee',
'z': 'zulu'
}

try:
sys.argv[1]
except:
print("Usage: natoalphabet.py <word>")
exit(1)

for letter in sys.argv[1]:
if letter.lower() not in nato_alphabet:
print(letter)
else:
print(nato_alphabet[letter])

Запуск с помощью:

python3 natoalphabet.py Graham

Работа с изображениями

from PIL import Image, ImageFilter

try:
original = Image.open("imagename.png")

# Размытие изображения
blurred = original.filter(ImageFilter.BLUR)

# Показ обоих изображений
original.show()
blurred.show()

blurred.save("blurred.png")

except:
print "Unable to load image"

Статус сайта

import requests
r = requests.get('https://blog.grahamzemel.com')
print(r.status_code)

И пусть эти модули и сниппеты помогут вам добиться чистого выполнения потоков задач на Python!

Читайте также:

Читайте нас в TelegramVK и Дзен


Перевод статьи Graham Zemel: 10 Simple Python Snippets for Web Development, Automation, and Data Science

Предыдущая статья10 самых серьезных ошибок в UX/UI-дизайне
Следующая статьяКэширование с помощью Redis и Node.js