כמי שבילה מעל עשור בעולם התכנות, למדתי שאוטומציה של משימות חוזרות יכולה לחסוך כמות משמעותית של זמן ומאמץ.
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 (לינוקס) או Task Scheduler (ווינדוס).
3. הורדת קבצים מהאינטרנט
אם אתה מוריד קבצים מהאינטרנט לעיתים קרובות, אז תוכל לאוטומט את המשימה הזו באמצעות ספריית aiohttp
.
הנה סקריפט פשוט להורדת קבצים מ-URLs:
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
(לטוויטר) ו־Instagram-API
(לאינסטגרם) שמאפשרות לך לפרסם באופן אוטומטי.
להלן דוגמה לשימוש בספריית 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!" בחשבון הטוויטר שלך.
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. ניקוי קבצים
פייתון מספקת דרך יעילה לאוטומציה של ניקוי קבצים, במיוחד למחיקה או העברת קבצים ישנים לשמירה על סדר בספריות.
להלן סקריפט פשוט שמוחק קבצים שיש להם יותר ממספר ימים מסוים באמצעות מודולי 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. יצירת סיסמאות באופן אוטומטי
יצירת סיסמאות חזקות וייחודיות חיונית לאבטחה, ופייתון יכולה לעזור באוטומציה של תהליך זה באמצעות מודול 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. מעקב אחר משימות/תזכורות
יצירת מעקב אחר משימות או מערכת תזכורות בפייתון ניתן להשיג באמצעות מודולים 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. יצירת דוחות יומיים אוטומטית
אוטומציה של דוחות יומיים על ידי שימוש בפייתון לאיסוף נתונים ועיצובם לדוח:
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. מעקב אחר משאבי המערכת
אם אתה מנהל מערכת, תוכל להשתמש בפייתון כדי לעקוב אחרי משאבי המערכת שלך כמו שימוש במעבד ובזיכרון, בעזרת ספריית 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 היום, ותן לו לטפל במטלות היומיומיות שלך!