プログラミングの世界では、効率的な作業が求められます。特に、反復的なタスクや大量のデータ処理においては、自動化が大きな力を発揮します。Pythonは、その豊富なライブラリと簡潔な文法により、自動化プログラミングに最適な言語の一つです。本記事では、日常的なプログラミング作業を大幅に効率化できる10個の実用的なPythonスクリプトを紹介します。これらのスクリプトは、ファイル管理からウェブスクレイピング、データ処理、エラー通知まで、幅広い用途をカバーしています。初心者の方にもわかりやすく、かつ経験豊富なプログラマーにとっても有用なコードとなっています。それでは、各スクリプトの詳細な説明と使用例を見ていきましょう。
このスクリプトは、指定されたディレクトリ内のファイルを自動的に整理します。
import os
import shutil
def organize_files(directory):
for filename in os.listdir(directory):
if os.path.isfile(os.path.join(directory, filename)):
file_extension = filename.split('.')[-1]
destination = os.path.join(directory, file_extension)
if not os.path.exists(destination):
os.makedirs(destination)
shutil.move(os.path.join(directory, filename), os.path.join(destination, filename))
organize_files('/path/to/your/directory')
os
モジュールを使用してファイルシステム操作を行います。shutil
モジュールを使用してファイルの移動を行います。organize_files('/Users/username/Downloads')
この例では、Downloadsフォルダ内のファイルが拡張子ごとに整理されます。
このスクリプトは、指定されたウェブサイトから特定の情報を抽出します。
import requests
from bs4 import BeautifulSoup
def scrape_website(url, tag, class_name):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
elements = soup.find_all(tag, class_=class_name)
return [element.text for element in elements]
results = scrape_website('https://example.com', 'div', 'article-title')
requests
ライブラリを使用してウェブページの内容を取得します。BeautifulSoup
を使用してHTMLを解析し、必要な情報を抽出します。article_titles = scrape_website('https://news.ycombinator.com', 'a', 'storylink')
for title in article_titles:
print(title)
この例では、Hacker Newsのトップページから記事のタイトルを抽出します。
このスクリプトは、指定されたフォルダの内容を自動的にバックアップします。
import shutil
import datetime
def create_backup(source, destination):
date = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
backup_name = f"{destination}/backup_{date}"
shutil.make_archive(backup_name, 'zip', source)
create_backup('/path/to/source', '/path/to/backup/destination')
shutil
モジュールを使用してフォルダ全体をZIPファイルに圧縮します。create_backup('/Users/username/Documents', '/Users/username/Backups')
この例では、Documentsフォルダの内容をBackupsフォルダにZIP形式でバックアップします。
このスクリプトは、指定した間隔で特定のタスクを自動的に実行します。
import schedule
import time
def job():
print("定期タスクを実行中...")
schedule.every(10).minutes.do(job)
schedule.every().hour.do(job)
schedule.every().day.at("10:30").do(job)
while True:
schedule.run_pending()
time.sleep(1)
schedule
ライブラリを使用して、タスクのスケジューリングを行います。def daily_report():
print("日次レポートを生成中...")
schedule.every().day.at("09:00").do(daily_report)
この例では、毎日午前9時に日次レポートを生成するタスクを設定しています。
このスクリプトは、ログファイルを解析して特定のパターンを検出します。
import re
def analyze_log(log_file, pattern):
with open(log_file, 'r') as file:
for line in file:
if re.search(pattern, line):
print(line.strip())
analyze_log('app.log', r'ERROR|CRITICAL')
re
モジュールを使用して正規表現によるパターンマッチングを行います。analyze_log('/var/log/system.log', r'(ERROR|CRITICAL).*database')
この例では、システムログからデータベースに関するエラーや重大な問題を検出します。
このスクリプトは、CSVファイルを読み込み、データを処理します。
import csv
def process_csv(file_path):
with open(file_path, 'r') as file:
reader = csv.DictReader(file)
for row in reader:
# データ処理ロジックをここに記述
print(row)
process_csv('data.csv')
csv
モジュールのDictReader
を使用して、CSVファイルをディクショナリとして読み込みます。def process_csv(file_path):
with open(file_path, 'r') as file:
reader = csv.DictReader(file)
for row in reader:
if int(row['age']) > 30:
print(f"{row['name']} is over 30")
process_csv('users.csv')
この例では、30歳以上のユーザーを抽出して表示します。
このスクリプトは、指定したAPIに定期的にリクエストを送信し、結果を処理します。
import requests
import json
def api_request(url, params=None):
response = requests.get(url, params=params)
return json.loads(response.text)
data = api_request('https://api.example.com/data', {'key': 'value'})
requests
ライブラリを使用してHTTPリクエストを送信します。json
モジュールを使用してJSON形式のレスポンスをPythonオブジェクトに変換します。weather_data = api_request('https://api.openweathermap.org/data/2.5/weather',
{'q': 'Tokyo', 'appid': 'YOUR_API_KEY'})
print(f"東京の現在の気温: {weather_data['main']['temp']}K")
この例では、OpenWeatherMap APIを使用して東京の現在の気温を取得しています。
このスクリプトは、指定したフォルダ内の画像を一括で処理します。
from PIL import Image
import os
def process_images(directory):
for filename in os.listdir(directory):
if filename.endswith(('.png', '.jpg', '.jpeg')):
with Image.open(os.path.join(directory, filename)) as img:
# 画像処理ロジックをここに記述
img = img.convert('L') # グレースケール変換の例
img.save(os.path.join(directory, f'processed_{filename}'))
process_images('/path/to/image/directory')
Pillow
ライブラリを使用して画像処理を行います。def process_images(directory):
for filename in os.listdir(directory):
if filename.endswith(('.png', '.jpg', '.jpeg')):
with Image.open(os.path.join(directory, filename)) as img:
img = img.convert('L') # グレースケール変換
img = img.resize((300, 300)) # リサイズ
img.save(os.path.join(directory, f'processed_{filename}'))
process_images('/Users/username/Pictures')
この例では、Picturesフォルダ内の画像をグレースケールに変換し、300×300にリサイズします。
このスクリプトは、SQLiteデータベースを操作します。
import sqlite3
def database_operation():
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
# テーブル作成
cursor.execute('''CREATE TABLE IF NOT EXISTS users
(id INTEGER PRIMARY KEY, name TEXT, email TEXT)''')
# データ挿入
cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", ('John Doe', 'john@example.com'))
# データ取得
cursor.execute("SELECT * FROM users")
print(cursor.fetchall())
conn.commit()
conn.close()
database_operation()
sqlite3
モジュールを使用してSQLiteデータベースに接続し、操作を行います。def add_user(name, email):
conn = sqlite3.connect('users.db')
cursor = conn.cursor()
cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", (name, email))
conn.commit()
conn.close()
add_user('Alice', 'alice@example.com')
この例では、ユーザーデータベースに新しいユーザーを追加しています。
このスクリプトは、エラーが発生した際に自動的に通知を送信します。
import smtplib
from email.mime.text import MIMEText
def send_error_notification(error_message):
sender = 'your_email@example.com'
receiver = 'admin@example.com'
password = 'your_password'
msg = MIMEText(error_message)
msg['Subject'] = 'Error Notification'
msg['From'] = sender
msg['To'] = receiver
with smtplib.SMTP_SSL('smtp.gmail.com', 465) as server:
server.login(sender, password)
server.sendmail(sender, receiver, msg.as_string())
try:
# エラーが発生する可能性のあるコード
raise Exception("テストエラー")
except Exception as e:
send_error_notification(str(e))
smtplib
モジュールを使用してメール送信を行います。email.mime.text
モジュールを使用してメールの内容を構築します。try:
# エラーが発生する可能性のあるコード
result = 10 / 0
except Exception as e:
send_error_notification(f"ゼロ除算エラーが発生しました: {str(e)}")
この例では、ゼロ除算エラーが発生した場合にエラー通知メールを送信します。
本記事で紹介した10個のPythonスクリプトは、プログラマーの日常業務を大幅に効率化する強力なツールとなります。これらのスクリプトを活用することで、以下のような利点が得られます:
ただし、これらのスクリプトを使用する際は、以下の点に注意してください:
これらのスクリプトを出発点として、自身の需要に合わせてカスタマイズし、さらに効率的な作業環境を構築していくことをお勧めします。Pythonの自動化の力を最大限に活用し、プログラミングの生産性を飛躍的に向上させましょう。
Python環境の導入方法をはこちら。
この記事が、あなたの役に立てば幸いです!