日常のタスクを自動化する 20 の Python スクリプト
プログラミングの世界で 10 年以上過ごしてきた私は、反復的なタスクを自動化することで時間と労力を大幅に節約できることを学びました。
シンプルな構文と強力なライブラリを備えたPython は、自動化スクリプトの作成に最適なプログラミング言語の 1 つです。あなたがプログラマーであっても、日常業務を楽にしたいと考えている人であっても、Python には役立つツールがあります。
この記事では、私がさまざまなタスクを自動化するために使用した 20 個の Python スクリプトを紹介します。これらのスクリプトは、時間を節約し、作業ルーチンの効率を向上させたい人に最適です。
1. ファイルの名前を一括変更する
ファイルの名前を 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. ファイルを自動的にバックアップする
ファイルを定期的にバックアップすることがいかに重要であるかは誰もが知っています。このタスクは、Python の shutil
モジュールを使用して簡単に自動化できます。
このスクリプトは、バックアップの目的で、あるディレクトリから別のディレクトリにすべてのファイルをコピーします。
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. インターネットからのファイルのダウンロード
インターネットからファイルを頻繁にダウンロードする場合は、requests
ライブラリを使用してこのタスクを自動化できます。
URL からファイルをダウンロードする簡単なスクリプトを次に示します。
import requests
def download_file(url, destination_folder):
response = requests.get(url)
if response.status_code == 200:
with open(destination_folder, 'wb') as file:
file.write(response.content)
print(f"Downloaded {url} to {destination_folder}")
else:
print(f"Failed to download {url}")
url = 'https://example.com/file.pdf' destination = '/path/to/destination/file.pdf' download_file(url, destination)
このスクリプトは、指定された 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 ' 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 ')
このスクリプトは、件名と本文を含む単純な電子メールを指定された受信者に送信します。この方法を使用する場合は、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 時) にタスクをトリガーします。
6. データ収集のための Web スクレイピング
Web スクレイピングは、Web サイトからのデータ収集を自動化する強力な手法であり、Python の BeautifulSoup
ライブラリと requests
ライブラリを使用すると、このプロセスが簡単になります。
import requests
from bs4 import BeautifulSoup
def scrape_website(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
data = soup.find_all('h1') # Example: Get all headings
for item in data:
print(item.text)
url = 'https://example.com' scrape_website(url)
このスクリプトは、Web ページからコンテンツを取得し、すべての見出し (h1
タグ) を出力します。他の種類のデータをスクレイピングするように調整できます。
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. 請求書の生成の自動化
請求書を定期的に生成する場合は、PDF 請求書を作成する Fpdf
などのライブラリを使用して自動化できます。
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
ライブラリを使用して Web サイトの稼働時間の監視を自動化できます。これにより、Web サイトがオンラインかどうかを定期的にチェックできます。
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
このスクリプトは、Web サイトがオンラインであるかどうかを確認し、ステータス コードを出力します。
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 ', '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 ') def send_email(subject, body, to_email): sender_email = '[email ' 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 os
import time
def clean_up(folder_path, days_old):
now = time.time()
cutoff_time = now - (days_old * 86400) # 86400 seconds in a day
for filename in os.listdir(folder_path):
file_path = os.path.join(folder_path, filename)
if os.path.getmtime(file_path) < cutoff_time:
os.remove(file_path)
print(f"Deleted {filename}")
folder = '/path/to/your/folder' clean_up(folder, 30) # Delete files older than 30 days
12. パスワードを自動的に生成する
強力で一意のパスワードを作成することはセキュリティにとって不可欠であり、Python では random
モジュールを使用してこのプロセスを自動化できます。
以下は、セキュリティを強化するために文字、数字、特殊文字を組み込んだ、指定された長さのランダムなパスワードを生成する単純なスクリプトです。
import random
import string
def generate_password(length=12):
# Define the character set: letters, digits, and punctuation
characters = string.ascii_letters + string.digits + string.punctuation
# Generate a random password
password = ''.join(random.choice(characters) for _ in range(length))
return password
Example usage: generate a password of 16 characters
password_length = 16
random_password = generate_password(password_length)
print(f"Generated Password: {random_password}")
13. タスクトラッカー/リマインダー
Python でタスク トラッカーまたはリマインダー システムを作成するには、datetime
モジュールと schedule
モジュールを使用します。
import schedule
import time
from datetime import datetime
def task_reminder(task_name):
print(f"Reminder: {task_name} - {datetime.now()}")
schedule.every().day.at("09:00").do(task_reminder, task_name="Morning Meeting")
while True:
schedule.run_pending()
time.sleep(1)
このスクリプトは、スケジュールされた時間にタスクに関するリマインダーを送信します。
14. 日次レポートの自動生成
Python を使用してデータを収集し、それをレポートにフォーマットすることで、日次レポートを自動化します。
import datetime
def generate_report(data):
today = datetime.date.today()
filename = f"daily_report_{today}.txt"
with open(filename, 'w') as file:
file.write(f"Report for {today}\n")
file.write("\n".join(data))
print(f"Report generated: {filename}")
data = ["Task 1: Completed", "Task 2: Pending", "Task 3: Completed"]
generate_report(data)
15. システムリソースの監視
システム管理者は、Python を使用して psutil
ライブラリを利用して、CPU やメモリの使用状況などのシステム リソースを監視できます。
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
def resize_images(folder_path, width, height):
for filename in os.listdir(folder_path):
if filename.endswith('.jpg'):
img = Image.open(os.path.join(folder_path, filename))
img = img.resize((width, height))
img.save(os.path.join(folder_path, f"resized_{filename}"))
print(f"Resized {filename}")
folder = '/path/to/your/images' resize_images(folder, 800, 600)
このスクリプトは、フォルダー内のすべての .jpg
画像のサイズを指定された寸法に変更します。
17. クラウドへのデータバックアップの自動化
Google ドライブなどのクラウド サービスへのバックアップの自動化は、pydrive
などのライブラリを使用する Python で可能になります。
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)
結論
これらは、日常のタスクを自動化するために Python でできることのほんの数例です。 Python は、そのシンプルな構文と強力なライブラリにより、投げかけられたほぼすべてのタスクを処理できます。
ファイルの管理、電子メールの送信、レポートの生成のいずれの場合でも、Python を使用すると時間を節約し、生産性を向上させることができます。さあ、今すぐ Python 自動化を始めて、日々の雑務を Python 自動化に任せましょう。