Предположу, что вы уже не новичок в создании 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')
Экспертный совет: не запускайте этот скрипт вслепую в системной папке, если хотите избежать хаоса.

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 минут за одно посещение, так что автоматизация этого процесса сэкономит массу времени.

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» («Загрузить»), уйти и вернуться к выключенному компьютеру.

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.
Читайте также:
- Разработка продвинутого GUI на Python
- В чём разница между [0] * 3 и [0, 0, 0] в Python? Только сеньоры знают правильный ответ
- Руководство по модулю Python itertools
Читайте нас в Telegram, VK и Дзен
Перевод статьи Abdur Rahman: 20 Python Scripts To Automate Your Daily Tasks




