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

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

1. Поиск дубликатов файлов

«Почему у меня осталось всего 100 МБ?» — наверняка не раз думали вы, глядя на свой жесткий диск. Дубликаты файлов быстро заполняют его пространство. Вот скрипт для их поиска и удаления:

import os
import hashlib

def hash_file(filename):
    h = hashlib.md5()
    with open(filename, 'rb') as file:
        while chunk := file.read(8192):
            h.update(chunk)
    return h.hexdigest()

def find_duplicates(folder):
    hashes = {}
    for dirpath, _, filenames in os.walk(folder):
        for f in filenames:
            full_path = os.path.join(dirpath, f)
            file_hash = hash_file(full_path)
            if file_hash in hashes:
                print(f"Duplicate found: {full_path} == {hashes[file_hash]}")
            else:
                hashes[file_hash] = full_path

find_duplicates('/path/to/your/folder')

Экспертный совет: не запускайте этот скрипт вслепую в системной папке, если хотите избежать хаоса.

Однажды я освободил 10 ГБ пространства менее чем за 10 минут, запустив эту функцию в папке со старыми проектами.

2. Автоматическое упорядочивание папки «Downloads»

До боли знакомая ситуация: однажды вы замечаете, что папка «Downloads» («Загрузки») выглядит как после торнадо. Вот скрипт, который все аккуратно упорядочивает:

import os
import shutil

def organize_folder(folder):
    file_types = {
        'Images': ['.jpeg', '.jpg', '.png', '.gif'],
        'Videos': ['.mp4', '.avi', '.mov'],
        'Documents': ['.pdf', '.docx', '.txt'],
        'Archives': ['.zip', '.rar']
    }

    for filename in os.listdir(folder):
        file_path = os.path.join(folder, filename)
        if os.path.isfile(file_path):
            ext = os.path.splitext(filename)[1].lower()
            for folder_name, extensions in file_types.items():
                if ext in extensions:
                    target_folder = os.path.join(folder, folder_name)
                    os.makedirs(target_folder, exist_ok=True)
                    shutil.move(file_path, os.path.join(target_folder, filename))
                    print(f'Moved {filename} to {folder_name}')

organize_folder('/path/to/Downloads')

Ни у кого нет времени организовывать файлы вручную.

3. Пакетный ресайзер изображений

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

from PIL import Image
import os

def batch_resize(folder, width, height):
    for filename in os.listdir(folder):
        if filename.endswith(('.jpeg', '.jpg', '.png')):
            img = Image.open(os.path.join(folder, filename))
            img = img.resize((width, height))
            img.save(os.path.join(folder, f"resized_{filename}"))
            print(f'Resized {filename}')

batch_resize('/path/to/images', 800, 600)

Идеально подходит для случаев, когда ваш босс хочет, чтобы «эти изображения были обрезаны и изменены в размере за… 5 минут».

4. Уведомитель о погоде в реальном времени

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

import requests
import time

API_KEY = 'your_api_key'
CITY = 'New York'

def get_weather():
    url = f"http://api.openweathermap.org/data/2.5/weather?q={CITY}&appid={API_KEY}"
    response = requests.get(url)
    data = response.json()
    return data['weather'][0]['description'], data['main']['temp'] - 273.15

while True:
    weather, temp = get_weather()
    print(f"Current weather in {CITY}: {weather}, {temp:.2f}°C")
    time.sleep(3600)  # Запуск каждый час

Кто захочет проверять погодное приложение вручную?

5. Email-отправка последних Reddit-публикаций по выбранной теме

Если вы одержимы определенным сабреддитом, но не хотите постоянно просматривать его, вот Python-скрипт, который будет отправлять последние публикации прямо в ваш почтовый ящик:

import smtplib
import requests

def send_email(subject, body):
    from_addr = '[email protected]'
    to_addr = '[email protected]'
    msg = f"Subject: {subject}\n\n{body}"
    with smtplib.SMTP('smtp.gmail.com', 587) as server:
        server.starttls()
        server.login('[email protected]', 'your_password')
        server.sendmail(from_addr, to_addr, msg)

def get_reddit_posts(subreddit):
    url = f"https://www.reddit.com/r/{subreddit}/new.json"
    headers = {'User-agent': 'Mozilla/5.0'}
    response = requests.get(url, headers=headers)
    data = response.json()
    return [post['data']['title'] for post in data['data']['children']]

posts = get_reddit_posts('python')
send_email('Latest Reddit Posts', '\n'.join(posts))

Интересный факт: средний пользователь Reddit просматривает сайт в течение 16 минут за одно посещение, так что автоматизация этого процесса сэкономит массу времени.

Раньше я просматривал Reddit каждые несколько часов. Теперь получаю последние сообщения по электронной почте, что позволяет мне держать свою зависимость от Reddit под контролем (вроде как!).

6. Превращение любой веб-страницы в электронную книгу

Этот скрипт превратит понравившуюся вам статью в формат электронной книги, идеально подходящий для автономного чтения:

import requests
from bs4 import BeautifulSoup
from ebooklib import epub

def create_ebook(url, book_title):
    response = requests.get(url)
    soup = BeautifulSoup(response.content, 'html.parser')
    
    book = epub.EpubBook()
    book.set_title(book_title)
    
    chapter = epub.EpubHtml(title='Chapter 1', file_name='chap_01.xhtml')
    chapter.content = soup.prettify()
    book.add_item(chapter)
    
    book.spine = ['nav', chapter]
    epub.write_epub(f'{book_title}.epub', book, {})

create_ebook('https://example.com/your-favorite-article', 'My eBook')

Почему бы иногда во время долгой поездки не прочитать потрясающий пост на Medium?

7. Преобразование текста в речь

Вам когда-нибудь хотелось не читать, а слушать вывод кода? Этот скрипт превращает текст в речь:

import pyttsx3

def text_to_speech(text):
    engine = pyttsx3.init()
    engine.say(text)
    engine.runAndWait()

text_to_speech('Hello World, Python is amazing!')

Экспертный совет: используйте этот скрипт, чтобы найти ошибки или просто отдохнуть от чтения.

8. Проверка доступности сайта

Хотите узнать, не нарушена ли работа вашего сайта? Вот простой скрипт, который проверит это за вас:

import requests

def is_website_online(url):
    try:
        response = requests.get(url)
        return response.status_code == 200
    except:
        return False

print(is_website_online('https://example.com'))

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

9. Мониторинг цен на криптовалюты

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

import requests

def get_crypto_price(crypto):
    url = f"https://api.coindesk.com/v1/bpi/currentprice/{crypto}.json"
    response = requests.get(url)
    data = response.json()
    return data['bpi']['USD']['rate']

print(get_crypto_price('BTC'))

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

10. Выключение компьютера после завершения загрузки

Позвольте своему компьютеру позаботиться о себе. Этот скрипт выключит его после завершения загрузки:

import os
import time

def check_downloads():
    while True:
        if not os.listdir('/path/to/downloads'):
            print("Shutting down...")
            os.system("shutdown /s /t 1")
        time.sleep(60)

check_downloads()

Теперь можете нажать кнопку «Download» («Загрузить»), уйти и вернуться к выключенному компьютеру.

Воспользовался этим скриптом при ночной загрузке Adobe Photoshop. Когда я проснулся, компьютер был выключен, а не работал всю ночь!

11. Защита паролем скриптов

Это отличный способ запаролить свои скрипты, чтобы никто не запускал их без разрешения:

import getpass

password = getpass.getpass('Enter your password: ')
if password != 'secret':
    print('Access Denied')
    exit()
else:
    print('Access Granted')
    # Защищенный код                     

Экспертный совет: используйте этот скрипт совместно с методом шифрования для двойной защиты.

12. Отслеживание нагрузки на процессор компьютера

Этот скрипт позволит контролировать нагрузку и нагрев процессора:

import psutil

def monitor_cpu():
    print(f"CPU usage: {psutil.cpu_percent()}%")
    print(f"Memory usage: {psutil.virtual_memory().percent}%")

monitor_cpu()

Новость о перегреве CPU никогда не бывает приятной.

13. Преобразование PDF-файлов в текст

Если вы часто работаете с PDF-файлами, этот скрипт извлечет для вас текст:

import PyPDF2

def pdf_to_text(pdf_file):
    reader = PyPDF2.PdfReader(pdf_file)
    text = ''
    for page in reader.pages:
        text += page.extract_text()
    return text

print(pdf_to_text('example.pdf'))

Теперь вы сможете легко извлечь важную информацию без бесконечного применения копипаста.

14. Генерация QR-кодов

Создавайте QR-коды для любых URL или текстов:

import qrcode

def generate_qr(text, filename):
    img = qrcode.make(text)
    img.save(f"{filename}.png")

generate_qr('https://example.com', 'my_qr_code')

Кто бы мог подумать, что создание QR-кодов может быть таким простым?

15. Загрузка видео с YouTube

Загружайте любимые видеоролики с YouTube за считанные секунды:

from pytube import YouTube

def download_video(url):
    yt = YouTube(url)
    yt.streams.get_highest_resolution().download()

download_video('https://www.youtube.com/watch?v=your_favorite_video')

Помните, что к загрузке следует подходить ответственно!

16. Создание случайных надежных паролей

Генерируйте надежные случайные пароли с помощью этого скрипта:

import string
import random

def generate_password(length):
    chars = string.ascii_letters + string.digits + string.punctuation
    return ''.join(random.choice(chars) for _ in range(length))

print(generate_password(16))

Перестаньте использовать ненадежные пароли. Безотлагательно и навсегда.

17. Мониторинг цен на акции в реальном времени

Отслеживайте цены на акции в реальном времени с помощью этого быстрого скрипта:

import requests

def get_stock_price(symbol):
    url = f"https://finnhub.io/api/v1/quote?symbol={symbol}&token=your_api_key"
    response = requests.get(url)
    data = response.json()
    return data['c']

print(get_stock_price('AAPL'))

Проверяйте свой портфель, даже не открывая браузер.

18. Создание простого чат-бота

Создайте собственного чат-бота:

import random

def chatbot():
    responses = ['Hello!', 'How can I help you?', 'Goodbye!']
    while True:
        user_input = input("You: ")
        if user_input.lower() == 'bye':
            print("Chatbot: Goodbye!")
            break
        print(f"Chatbot: {random.choice(responses)}")

chatbot()

Личный помощник может быть создан с помощью нескольких строк кода.

19. Отслеживание успехов при ходьбе с помощью счетчика шагов

У вас есть фитнес-трекер? Подсчитывайте количество шагов с помощью Python-скрипта:

import fitbit

def get_daily_steps(token):
    client = fitbit.Fitbit('client_id', 'client_secret', oauth2_token=token)
    steps = client.activities()['summary']['steps']
    return steps

print(f"Steps today: {get_daily_steps('your_token')}")

Кто сказал, что Python не помогает сохранить здоровье?

20. Составление списка дел

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

import json

def add_task(task):
    with open('todo.json', 'r+') as file:
        tasks = json.load(file)
        tasks.append(task)
        file.seek(0)
        json.dump(tasks, file)

add_task('Publish Medium article')

Будьте хозяином положения вместе с Python.

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

Читайте нас в Telegram, VK и Дзен


Перевод статьи Abdur Rahman: 20 Python Scripts To Automate Your Daily Tasks

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