21 Простой сценарий Python, который автоматизирует ваши повседневные задачи

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

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 уже сегодня и позвольте ему справляться с вашими повседневными делами!

Source:
https://www.tecmint.com/python-automation-scripts/