Python — один из моих любимых инструментов для написания кода. Это язык программирования “высокого уровня”, и он обладает множеством полезных свойств и возможностей. Высокоуровневые языки обычно автоматизируют многие функции, то есть в 5 строках Python можно сделать то же самое, что в 50 строках Java.
По этой причине многие разработчики используют его для создания еще более продуктивных функций и возможностей. Вот некоторые из них, используемые мной для повышения производительности и автоматизации задач.
ПРИМЕЧАНИЕ: ВЕСЬ КОД ИЗ ПРИМЕРОВ БЫЛ ПРОТЕСТИРОВАН И В НАСТОЯЩЕЕ ВРЕМЯ РАБОТАЕТ С PYTHON 3.11.
Генератор паролей import stringfrom random import *characters = string.ascii_letters + string.punctuation + string.digitspassword = "".join(choice(characters) for x in range(randint(8, 16)))print(password)
Программный поиск Google from googlesearch import searchquery = "Graham Zemel"for url in search(query): print(url)
from googlesearch import searchquery = "Graham Zemel"for url in search(query): print(url)
Перед запуском требуется установить библиотеку Python “google” (pip3 install google в командной строке).
Автоматизированный бот для браузера import timefrom selenium import webdriverfrom selenium.webdriver.common.keys import Keysbot = 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 в командной строке).
Создание пользовательских модулей # Нахождение текушего пути скрипта Pythonimport sysprint(sys.path)# пример my_module: ‘/Users/grahamzemel/my_module’ (не нужно включать ‘.py’)import my_modulemy_module.my_function()
Создание фейковых данных import pandas as pdfrom 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)
import pandas as pdfrom 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.56percentage = 0.33big_number = 149839020429482print(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 pdimport numpy as npfrom tqdm import tqdm# Сгенерируйте датафрейм со случайными числами формой 1000 x 1000df = 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)
import pandas as pdimport numpy as npfrom tqdm import tqdm# Сгенерируйте датафрейм со случайными числами формой 1000 x 1000df = 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 sysnato_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 requestsr = requests.get(’https://blog.grahamzemel.com’)print(r.status_code)
import requestsr = requests.get(’https://blog.grahamzemel.com’)print(r.status_code)
И пусть эти модули и сниппеты помогут вам добиться чистого выполнения потоков задач на Python!