Как человек, который провел более десяти лет в мире программирования, я узнал, что автоматизация повторяющихся задач может сэкономить значительное количество времени и усилий.
Python, с его простым синтаксисом и мощными библиотеками, является одним из лучших языков программирования для создания скриптов автоматизации. Независимо от того, являетесь ли вы программистом или человеком, который хочет облегчить выполнение ежедневных задач, Python имеет инструменты, которые могут вам помочь.
В этой статье я поделюсь 21 скриптом на Python, которые я использовал для автоматизации различных задач. Эти скрипты идеально подходят для любого, кто хочет сэкономить время и повысить эффективность своей рабочей рутины.
1. Массовое переименование файлов
Переименование файлов по одному может быть трудоемкой задачей, но с помощью Python вы можете легко автоматизировать это, используя модуль os.
Вот простой скрипт, который переименовывает несколько файлов в папке на основе заданного шаблона:
import os def bulk_rename(folder_path, old_name_part, new_name_part): for filename in os.listdir(folder_path): if old_name_part in filename: new_filename = filename.replace(old_name_part, new_name_part) os.rename(os.path.join(folder_path, filename), os.path.join(folder_path, new_filename)) print(f"Renamed {filename} to {new_filename}") folder = '/path/to/your/folder
' bulk_rename(folder, 'old_part
', 'new_part
')
Этот скрипт ищет файлы, содержащие old_name_part
в их именах, и заменяет его на new_name_part
.
2. Автоматическое резервное копирование файлов
Мы все знаем, как важно регулярно делать резервные копии файлов, и эту задачу можно легко автоматизировать с помощью модуля shutil
в Python.
Этот скрипт скопирует все файлы из одного каталога в другой для целей резервного копирования:
import shutil import os def backup_files(src_dir, dest_dir): if not os.path.exists(dest_dir): os.makedirs(dest_dir) for file in os.listdir(src_dir): full_file_name = os.path.join(src_dir, file) if os.path.isfile(full_file_name): shutil.copy(full_file_name, dest_dir) print(f"Backed up {file} to {dest_dir}") source = '/path/to/source/directory
' destination = '/path/to/destination/directory
' backup_files(source, destination)
Вы можете запланировать выполнение этого скрипта ежедневно, используя инструменты планирования задач, такие как cron (Linux) или Планировщик задач (Windows).
3. Загрузка файлов из Интернета
Если вы часто загружаете файлы из интернета, вы можете автоматизировать эту задачу, используя библиотеку aiohttp
.
Вот простой скрипт для загрузки файлов по URL:
import aiohttp import asyncio import aiofiles async def download_file(url, filename): async with aiohttp.ClientSession() as session: async with session.get(url) as response: async with aiofiles.open(filename, 'wb') as file: await file.write(await response.read()) print(f"Downloaded {filename}") urls = { 'https://example.com/file1.zip': 'file1.zip', 'https://example.com/file2.zip': 'file2.zip' } async def download_all(): tasks = [download_file(url, filename) for url, filename in urls.items()] await asyncio.gather(*tasks) asyncio.run(download_all())
Этот скрипт загружает файл по указанному URL и сохраняет его в указанную папку.
4. Автоматизация отправки отчетов по электронной почте
Если вам необходимо регулярно отправлять отчеты по электронной почте, вы можете автоматизировать это, используя библиотеку smtplib
, которая позволяет легко отправлять электронные письма с учетной записи Gmail:
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart def send_email(subject, body, to_email): sender_email = '[email protected]' sender_password = 'yourpassword' receiver_email = to_email msg = MIMEMultipart() msg['From'] = sender_email msg['To'] = receiver_email msg['Subject'] = subject msg.attach(MIMEText(body, 'plain')) try: server = smtplib.SMTP('smtp.gmail.com', 587) server.starttls() server.login(sender_email, sender_password) server.sendmail(sender_email, receiver_email, msg.as_string()) server.quit() print("Email sent successfully!") except Exception as e: print(f"Failed to send email: {e}") subject = 'Monthly Report' body = 'Here is the monthly report.' send_email(subject, body, '[email protected]')
Этот скрипт отправит простое электронное письмо с темой и текстом получателю. Убедитесь, что в Gmail включена опция “Менее безопасные приложения”, если вы используете этот метод.
5. Планировщик задач (Автоматизация задач)
Планирование задач можно легко осуществить, используя библиотеку schedule
, которая позволяет автоматизировать задачи, такие как отправка электронной почты или запуск сценария резервного копирования в определенное время:
import schedule import time def job(): print("Running scheduled task!") # Schedule the task to run every day at 10:00 AM schedule.every().day.at("10:00").do(job) while True: schedule.run_pending() time.sleep(1)
Этот скрипт будет продолжать работать и запускать задачи в указанное время, в данном случае, в 10:00 утра каждый день.
6. Веб-скрапинг для сбора данных
Использование aiohttp
для асинхронных HTTP-запросов вместо синхронной библиотеки requests
может сделать веб-скрапинг более эффективным.
Этот пример извлекает несколько страниц параллельно.
import aiohttp import asyncio from bs4 import BeautifulSoup async def fetch(session, url): async with session.get(url) as response: return await response.text() async def scrape(urls): async with aiohttp.ClientSession() as session: tasks = [fetch(session, url) for url in urls] html_pages = await asyncio.gather(*tasks) for html in html_pages: soup = BeautifulSoup(html, 'html.parser') print(soup.title.string) urls = ['https://example.com/page1
', 'https://example.com/page2
'] asyncio.run(scrape(urls))
7. Автоматизация публикаций в социальных сетях
Если вы управляете учетными записями в социальных сетях, то вы можете автоматизировать публикации, используя библиотеки, такие как Tweepy
(для Twitter) и Instagram-API
(для Instagram), которые позволяют вам публиковать автоматически.
Ниже приведен пример использования библиотеки Tweepy
для публикации твита:
import tweepy def tweet(message): consumer_key = 'your_consumer_key' consumer_secret = 'your_consumer_secret' access_token = 'your_access_token' access_token_secret = 'your_access_token_secret' auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth) api.update_status(message) print("Tweet sent successfully!") tweet("Hello, world!")
Этот скрипт публикует твит с сообщением “Hello, world!
” на вашем аккаунте Twitter.
8. Автоматизация генерации счетов
Если вы регулярно генерируете счета, то вы можете автоматизировать это, используя библиотеки, такие как Fpdf
, которая создаст PDF-счета:
from fpdf import FPDF def create_invoice(client_name, amount): pdf = FPDF() pdf.add_page() pdf.set_font("Arial", size=12) pdf.cell(200, 10, txt="Invoice", ln=True, align='C') pdf.cell(200, 10, txt=f"Client: {client_name}", ln=True, align='L') pdf.cell(200, 10, txt=f"Amount: ${amount}", ln=True, align='L') pdf.output(f"{client_name}_invoice.pdf") print(f"Invoice for {client_name} created successfully!") create_invoice('John Doe', 500)
Этот скрипт создает простой счет и сохраняет его в формате PDF.
9. Мониторинг доступности веб-сайта
Python можно использовать для автоматизации мониторинга доступности веб-сайта с использованием библиотеки requests
, которая периодически проверяет, доступен ли веб-сайт или нет:
import requests
import time
def check_website(url):
try:
response = requests.get(url)
if response.status_code == 200:
print(f"Website {url} is up!")
else:
print(f"Website {url} returned a status code {response.status_code}")
except requests.exceptions.RequestException as e:
print(f"Error checking website {url}: {e}")
url = 'https://example.com
' while True: check_website(url) time.sleep(3600) # Check every hour
Этот скрипт проверяет, доступен ли веб-сайт и выводит код статуса.
10. Автоматический ответ на электронные письма
Если вы часто получаете электронные письма и хотите настроить автоответ, то используйте библиотеки imaplib
и smtplib
, чтобы автоматически отвечать на электронные письма:
import imaplib import smtplib from email.mime.text import MIMEText def auto_reply(): # Connect to email server mail = imaplib.IMAP4_SSL("imap.gmail.com") mail.login('[email protected]', 'yourpassword') mail.select('inbox') # Search for unread emails status, emails = mail.search(None, 'UNSEEN') if status == "OK": for email_id in emails[0].split(): status, email_data = mail.fetch(email_id, '(RFC822)') email_msg = email_data[0][1].decode('utf-8') # Send auto-reply send_email("Auto-reply", "Thank you for your email. I'll get back to you soon.", '[email protected]') def send_email(subject, body, to_email): sender_email = '[email protected]' sender_password = 'yourpassword' receiver_email = to_email msg = MIMEText(body) msg['From'] = sender_email msg['To'] = receiver_email msg['Subject'] = subject with smtplib.SMTP_SSL('smtp.gmail.com', 465) as server: server.login(sender_email, sender_password) server.sendmail(sender_email, receiver_email, msg.as_string()) auto_reply()
Этот скрипт автоматически отвечает на непрочитанные письма с заранее заданным сообщением.
11. Очистка файлов
Python предоставляет эффективный способ автоматизации очистки файлов, особенно для удаления или перемещения старых файлов для поддержания организованных каталогов.
Ниже приведен простой скрипт, который удаляет файлы, старше определенного количества дней, используя модули os
и time
.
import aiofiles import os import asyncio import time async def clean_up(folder_path, days_old): now = time.time() cutoff_time = now - (days_old * 86400) for filename in os.listdir(folder_path): file_path = os.path.join(folder_path, filename) if os.path.getmtime(file_path) < cutoff_time: await aiofiles.os.remove(file_path) print(f"Deleted {filename}") folder = '/path/to/your/folder' asyncio.run(clean_up(folder, 30))
12. Генерация паролей автоматически
Создание надежных уникальных паролей необходимо для безопасности, и Python может помочь автоматизировать этот процесс с помощью модуля random
.
Ниже приведен простой скрипт, который генерирует случайные пароли заданной длины, включая буквы, цифры и специальные символы для повышения безопасности.
import random import asyncio import string async def generate_password(length=12): characters = string.ascii_letters + string.digits + string.punctuation password = ''.join(random.choice(characters) for _ in range(length)) return password async def generate_multiple_passwords(n, length=12): tasks = [generate_password(length) for _ in range(n)] passwords = await asyncio.gather(*tasks) print(passwords) asyncio.run(generate_multiple_passwords(5))
13. Отслеживание задач/напоминаний
Создание системы отслеживания задач или напоминаний на Python можно осуществить с использованием модулей datetime
и asyncio
.
import asyncio from datetime import datetime async def task_reminder(task_name, interval): while True: print(f"Reminder: {task_name} - {datetime.now()}") await asyncio.sleep(interval) async def main(): await asyncio.gather( task_reminder("Drink Water", 7200), # Remind every 2 hours task_reminder("Take a Break", 3600) # Remind every 1 hour ) asyncio.run(main())
Этот скрипт отправляет напоминание о задаче в запланированное время.
14. Автоматическое создание ежедневных отчетов
Автоматизируйте ежедневные отчеты, используя Python для сбора данных и их форматирования в отчет:
import datetime import aiofiles import asyncio async def generate_report(data): today = datetime.date.today() filename = f"daily_report_{today}.txt" async with aiofiles.open(filename, 'w') as file: await file.write(f"Report for {today}\n") await file.write("\n".join(data)) print(f"Report generated: {filename}") data = ["Task 1: Completed", "Task 2: Pending", "Task 3: Completed"] asyncio.run(generate_report(data))
15. Мониторинг ресурсов системы
Если вы администратор системы, вы можете использовать Python для мониторинга ресурсов вашей системы, таких как использование ЦП и память, с помощью библиотеки psutil
.
import psutil def monitor_resources(): cpu_usage = psutil.cpu_percent(interval=1) memory_usage = psutil.virtual_memory().percent print(f"CPU Usage: {cpu_usage}%") print(f"Memory Usage: {memory_usage}%") monitor_resources()
16. Пакетное изменение размера изображений
Если вам нужно изменить размер изображений массово, Python делает это легким с помощью библиотеки Pillow
.
from PIL import Image import os import asyncio from concurrent.futures import ProcessPoolExecutor def resize_image(filename, width, height): img = Image.open(filename) img = img.resize((width, height)) img.save(f"resized_{filename}") return f"Resized {filename}" async def resize_images(folder_path, width, height): with ProcessPoolExecutor() as executor: loop = asyncio.get_event_loop() tasks = [] for filename in os.listdir(folder_path): if filename.endswith('.jpg'): tasks.append(loop.run_in_executor( executor, resize_image, os.path.join(folder_path, filename), width, height)) results = await asyncio.gather(*tasks) print(results) folder = '/path/to/your/images' asyncio.run(resize_images(folder, 800, 600))
Этот скрипт изменяет размер всех изображений с расширением .jpg
в папке до указанных размеров.
17. Автоматизация резервного копирования данных в облако
Автоматизация резервного копирования в облачные службы, такие как Google Drive, становится возможной с помощью Python с использованием библиотек, таких как pydrive
.
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
def backup_to_google_drive(file_path):
gauth = GoogleAuth()
gauth.LocalWebserverAuth()
drive = GoogleDrive(gauth)
file = drive.CreateFile({'title': 'backup_file.txt'})
file.Upload()
print("Backup uploaded successfully!")
file = '/path/to/your/file.txt
' backup_to_google_drive(file)
18. Создание ежедневных напоминаний
Настройка ежедневных напоминаний легка с модулем time
, который будет напоминать вам пить воду каждые 2 часа:
import time def water_reminder(): while True: print("Time to drink water!") time.sleep(7200) # Remind every 2 hours water_reminder()
19. Автоматизация ввода данных в Excel
Если вы часто вводите данные в Excel, Python может помочь автоматизировать эту задачу с помощью библиотеки openpyxl
:
from openpyxl import Workbook def create_excel(data): wb = Workbook() ws = wb.active for row in data: ws.append(row) wb.save('data.xlsx') print("Excel file created successfully!") data = [ ["Name", "Age", "City"], ["John", 30, "New York"], ["Anna", 25, "London"], ] create_excel(data)
20. Автоматизация очистки данных
Если вы работаете с большими наборами данных, Python может автоматизировать задачи по очистке данных, которые удалят пустые строки из файла CSV:
import csv
def clean_csv(file_path):
with open(file_path, 'r') as infile:
reader = csv.reader(infile)
rows = [row for row in reader if any(row)]
with open(file_path, 'w', newline='') as outfile:
writer = csv.writer(outfile)
writer.writerows(rows)
print("Empty rows removed from CSV")
file = '/path/to/your/data.csv
' clean_csv(file)
21. Извлечение текста из изображений
Python можно использовать для извлечения текста из изображений с использованием библиотеки pytesseract
, что может быть полезно, когда вам нужно цифровизировать напечатанный контент или извлечь текст из отсканированных документов.
from PIL import Image import pytesseract def extract_text_from_image(image_path): # Open the image file img = Image.open(image_path) # Use pytesseract to extract text text = pytesseract.image_to_string(img) return text image_path = 'path_to_your_image.jpg' extracted_text = extract_text_from_image(image_path) print("Extracted Text:\n", extracted_text)
Заключение
Это всего лишь несколько примеров того, что Python может сделать для автоматизации ваших повседневных задач. Благодаря своему простому синтаксису и мощным библиотекам Python может справиться практически с любой задачей, которую вы ему бросите.
Будь то управление файлами, отправка электронных писем или генерация отчетов, Python может сэкономить вам время и повысить производительность. Так что начните автоматизацию с Python уже сегодня и позвольте ему справляться с вашими повседневными делами!