PR表記: 当記事にはアフィリエイトリンクが含まれます。商品の購入は自己判断でお願いします。
「Pythonで自動化したいけど、何から始めればいいかわからない」という方向けに、すぐに使える実践的なコード例を紹介します。ファイル整理、Excel操作、Web情報取得など、日常業務でよくあるタスクを取り上げます。
前提: Python環境の準備
Python 3.9以上が必要です。macOSの場合は以下でインストールできます。
# Homebrewでインストール
brew install python
# バージョン確認
python3 --version
Windowsの場合はpython.orgからインストーラーをダウンロードしてください。
1. ファイルの自動整理
ダウンロードフォルダの中身を拡張子ごとに分類するスクリプトです。
from pathlib import Path
import shutil
def organize_downloads():
"""ダウンロードフォルダを拡張子別に整理する"""
downloads = Path.home() / "Downloads"
# 拡張子とフォルダ名の対応
categories = {
"images": [".jpg", ".jpeg", ".png", ".gif", ".webp"],
"documents": [".pdf", ".doc", ".docx", ".txt", ".csv"],
"videos": [".mp4", ".mov", ".avi", ".mkv"],
"archives": [".zip", ".tar", ".gz", ".rar"],
}
moved_count = 0
for file in downloads.iterdir():
if not file.is_file():
continue
suffix = file.suffix.lower()
for folder_name, extensions in categories.items():
if suffix in extensions:
dest_dir = downloads / folder_name
dest_dir.mkdir(exist_ok=True)
shutil.move(str(file), str(dest_dir / file.name))
moved_count += 1
print(f"移動: {file.name} -> {folder_name}/")
break
print(f"\n完了: {moved_count}件のファイルを整理しました")
if __name__ == "__main__":
organize_downloads()
2. Excelファイルの自動処理
openpyxlを使ったExcelファイルの読み書きです。
pip install openpyxl
from openpyxl import load_workbook
from pathlib import Path
def summarize_excel(filepath: str):
"""Excelファイルの各シートの行数を集計する"""
wb = load_workbook(filepath, read_only=True)
for sheet_name in wb.sheetnames:
ws = wb[sheet_name]
row_count = ws.max_row
col_count = ws.max_column
print(f"シート: {sheet_name} -> {row_count}行 x {col_count}列")
wb.close()
# 使い方
summarize_excel("report.xlsx")
CSVからExcelへの変換
import csv
from openpyxl import Workbook
def csv_to_excel(csv_path: str, excel_path: str):
"""CSVファイルをExcelに変換する"""
wb = Workbook()
ws = wb.active
with open(csv_path, "r", encoding="utf-8") as f:
reader = csv.reader(f)
for row in reader:
ws.append(row)
wb.save(excel_path)
print(f"変換完了: {csv_path} -> {excel_path}")
csv_to_excel("data.csv", "data.xlsx")
3. Webページの情報取得
requestsとBeautifulSoupを使った基本的なスクレイピングです。
pip install requests beautifulsoup4
import requests
from bs4 import BeautifulSoup
def get_page_title(url: str) -> str:
"""指定URLのページタイトルを取得する"""
response = requests.get(url, timeout=10)
response.raise_for_status()
soup = BeautifulSoup(response.text, "html.parser")
title = soup.find("title")
return title.text.strip() if title else "タイトルなし"
# 使い方
title = get_page_title("https://example.com")
print(f"タイトル: {title}")
注意: Webスクレイピングを行う際は、対象サイトの利用規約とrobots.txtを必ず確認してください。過度なリクエストはサーバーに負荷をかけるため、適切な間隔(1秒以上)を空けましょう。
4. 定期実行との組み合わせ
作成したスクリプトを定期実行するには、macOSならlaunchd、LinuxならcronやSystemdが使えます。
# macOSでの例: 毎日9時にスクリプトを実行
# ~/Library/LaunchAgents/com.example.organize.plist を作成
launchdの詳しい設定方法はlaunchd完全ガイドを参照してください。
5. スクリプトのエラーハンドリング
自動化スクリプトはエラーが発生しても止まらないようにするのが大切です。
import traceback
from datetime import datetime
def run_with_logging(func, log_path: str = "/tmp/automation.log"):
"""関数を実行し、エラーがあればログに記録する"""
try:
func()
except Exception as e:
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
error_msg = f"[{timestamp}] ERROR: {e}\n{traceback.format_exc()}\n"
with open(log_path, "a") as f:
f.write(error_msg)
print(f"エラーが発生しました。ログ: {log_path}")
# 使い方
run_with_logging(organize_downloads)
まとめ
Pythonの標準ライブラリと少しの外部パッケージだけで、日常業務の多くを自動化できます。まずは小さなタスクから始めて、少しずつスクリプトを増やしていくのがおすすめです。
自動化スクリプトの作り方やAIを活用した効率化の事例は、AI副業ラボでも紹介しています。
よくある質問(FAQ)
Q1: Pythonの初心者でも自動化スクリプトは書けますか?
この記事で紹介しているコードはコピペで動作するように書いています。Python基礎(変数、関数、forループ)がわかれば十分です。わからない部分はChatGPTやGeminiなどのAIに聞きながら進められます。
Q2: 自動化スクリプトが途中でエラーになったらどうなりますか?
エラーハンドリング(try/except)を入れておけば、エラーが発生してもスクリプト全体が止まることを防げます。記事内の run_with_logging 関数のようにログを残す仕組みを入れておくと、後から原因を調べやすくなります。
Q3: スクレイピングは法的に問題ありませんか?
対象サイトの利用規約とrobots.txtに従う必要があります。個人的な情報収集であっても、規約で禁止されている場合は行わないでください。また、過度なアクセスは業務妨害になる可能性があります。常識的な間隔(1秒以上)を空けてアクセスしましょう。
参考書籍: Python自動化を体系的に学びたい方に。
