Windowsユーザーの日常生活や仕事で役立つPythonプログラム30選

こんにちは。ゆうせいです。

Pythonは、ちょっとした作業を効率化するために非常に便利なツールです。Windowsユーザーの日常生活や仕事で役立つPythonプログラムの例をいくつか挙げてみます。どれもシンプルなスクリプトなので、初心者でも挑戦しやすいですよ。


1. フォルダ内のファイル整理プログラム

用途

特定のフォルダにたくさんのファイルが溜まったとき、種類別に自動で整理してくれます。

具体例

  • 画像(JPG, PNG)を「画像」フォルダへ移動
  • PDFを「ドキュメント」フォルダへ移動
  • その他のファイルを「その他」フォルダへ移動
import os
import shutil

def organize_folder(path):
    extensions = {
        "画像": [".jpg", ".png", ".gif"],
        "ドキュメント": [".pdf", ".docx", ".txt"],
        "動画": [".mp4", ".mkv", ".avi"]
    }

    for folder in extensions.keys():
        os.makedirs(os.path.join(path, folder), exist_ok=True)

    for file in os.listdir(path):
        if os.path.isfile(os.path.join(path, file)):
            moved = False
            for folder, exts in extensions.items():
                if any(file.endswith(ext) for ext in exts):
                    shutil.move(os.path.join(path, file), os.path.join(path, folder))
                    moved = True
                    break
            if not moved:
                shutil.move(os.path.join(path, file), os.path.join(path, "その他"))

path_to_organize = input("整理したいフォルダのパスを入力してください: ")
organize_folder(path_to_organize)
print("ファイル整理が完了しました!")


2. スクリーンショット自動保存ツール

用途

特定のキーを押すとスクリーンショットを撮影し、自動的にファイルとして保存するツールです。Windowsの「Print Screen」キーを使ったスクリーンショットより柔軟です。

import pyautogui
import os
from datetime import datetime

def take_screenshot():
    folder = "スクリーンショット"
    os.makedirs(folder, exist_ok=True)
    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
    file_path = os.path.join(folder, f"screenshot_{timestamp}.png")
    pyautogui.screenshot(file_path)
    print(f"スクリーンショットを保存しました: {file_path}")

take_screenshot()


3. PC起動時にメモリ使用率をモニターするツール

用途

PCのメモリ使用率を監視し、一定の閾値を超えた場合に通知を表示します。動作が重くなる原因を特定しやすくなります。

import psutil
import time

def monitor_memory(threshold):
    while True:
        memory = psutil.virtual_memory()
        if memory.percent > threshold:
            print(f"警告! メモリ使用率が {memory.percent}% です。")
        time.sleep(5)

threshold = int(input("警告を出すメモリ使用率の閾値(%)を入力してください: "))
monitor_memory(threshold)


4. パスワード生成ツール

用途

ランダムで強力なパスワードを簡単に生成します。セキュリティを強化したい場合に便利です。

import random
import string

def generate_password(length=12):
    characters = string.ascii_letters + string.digits + string.punctuation
    password = ''.join(random.choice(characters) for _ in range(length))
    return password

length = int(input("生成するパスワードの長さを入力してください: "))
print("生成されたパスワード:", generate_password(length))


5. ファイルの検索ツール

用途

指定したフォルダ内から特定のキーワードを含むファイルを探し出します。仕事や学習で資料を探す際に役立ちます。

import os

def search_files(folder, keyword):
    for root, dirs, files in os.walk(folder):
        for file in files:
            if keyword.lower() in file.lower():
                print(os.path.join(root, file))

folder = input("検索したいフォルダのパスを入力してください: ")
keyword = input("検索するキーワードを入力してください: ")
search_files(folder, keyword)


6. リマインダー通知ツール

用途

指定した時間にPC画面上で通知を表示します。仕事や勉強の時間管理に便利です。

import time
from plyer import notification

def set_reminder(message, seconds):
    print(f"{seconds}秒後にリマインダーを表示します。")
    time.sleep(seconds)
    notification.notify(
        title="リマインダー",
        message=message,
        timeout=10
    )

message = input("リマインダー内容を入力してください: ")
seconds = int(input("何秒後に通知を表示しますか?: "))
set_reminder(message, seconds)


7. YouTube動画のダウンロードツール

用途

URLを指定して動画をダウンロードします。オフラインで動画を楽しむのに便利です。

from pytube import YouTube

def download_video(url):
    yt = YouTube(url)
    print("タイトル:", yt.title)
    stream = yt.streams.get_highest_resolution()
    stream.download()
    print("動画をダウンロードしました!")

url = input("ダウンロードしたいYouTube動画のURLを入力してください: ")
download_video(url)

以下は、Windowsユーザーにとって日常で役立つPythonプログラムの追加例です。どれもシンプルに使える便利なスクリプトなので、試してみてください!


8. ZIPファイルの一括解凍ツール

用途

特定のフォルダ内にあるすべてのZIPファイルを一括で解凍します。

import zipfile
import os

def extract_all_zips(folder):
    for file in os.listdir(folder):
        if file.endswith('.zip'):
            file_path = os.path.join(folder, file)
            with zipfile.ZipFile(file_path, 'r') as zip_ref:
                extract_to = os.path.join(folder, file.replace('.zip', ''))
                os.makedirs(extract_to, exist_ok=True)
                zip_ref.extractall(extract_to)
                print(f"{file} を解凍しました!")

folder = input("ZIPファイルがあるフォルダのパスを入力してください: ")
extract_all_zips(folder)


9. フォルダサイズの計測ツール

用途

指定したフォルダのサイズを計算し、ディスク容量の管理を助けます。

import os

def get_folder_size(folder):
    total_size = 0
    for dirpath, dirnames, filenames in os.walk(folder):
        for f in filenames:
            fp = os.path.join(dirpath, f)
            total_size += os.path.getsize(fp)
    return total_size

folder = input("サイズを確認したいフォルダのパスを入力してください: ")
size = get_folder_size(folder)
print(f"フォルダのサイズ: {size / (1024 * 1024):.2f} MB")


10. ブラウザの履歴クリーナー

用途

特定のブラウザの履歴やキャッシュを自動的に削除します。(Chromeのキャッシュフォルダを例にしています)

import os
import shutil

def clear_browser_cache():
    chrome_cache_path = os.path.expanduser("~\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Cache")
    if os.path.exists(chrome_cache_path):
        shutil.rmtree(chrome_cache_path)
        print("Chromeのキャッシュを削除しました!")
    else:
        print("Chromeのキャッシュフォルダが見つかりませんでした。")

clear_browser_cache()


11. バッチリネームツール

用途

指定したフォルダ内のファイルをまとめてリネームします。写真や動画の整理に便利です。

import os

def batch_rename(folder, prefix):
    for i, file in enumerate(os.listdir(folder)):
        ext = os.path.splitext(file)[1]
        new_name = f"{prefix}_{i + 1}{ext}"
        os.rename(os.path.join(folder, file), os.path.join(folder, new_name))
        print(f"{file} → {new_name}")

folder = input("リネームしたいファイルがあるフォルダのパスを入力してください: ")
prefix = input("新しいファイル名のプレフィックスを入力してください: ")
batch_rename(folder, prefix)


12. 壁紙自動変更ツール

用途

指定したフォルダの画像をランダムに選んで、Windowsの壁紙を変更します。

import os
import random
import ctypes

def change_wallpaper(folder):
    images = [os.path.join(folder, f) for f in os.listdir(folder) if f.endswith(('.jpg', '.png', '.bmp'))]
    if not images:
        print("壁紙に使える画像が見つかりませんでした。")
        return
    new_wallpaper = random.choice(images)
    ctypes.windll.user32.SystemParametersInfoW(20, 0, new_wallpaper, 0)
    print(f"壁紙を変更しました: {new_wallpaper}")

folder = input("壁紙用の画像が入ったフォルダのパスを入力してください: ")
change_wallpaper(folder)


13. 定時アラームツール

用途

指定した時刻にアラーム音を鳴らして通知します。

import time
import winsound

def set_alarm(hour, minute):
    print(f"アラームを {hour}:{minute} に設定しました。")
    while True:
        current_time = time.localtime()
        if current_time.tm_hour == hour and current_time.tm_min == minute:
            print("アラーム!時間です!")
            winsound.Beep(1000, 1000)  # 周波数1000Hzで1秒鳴らす
            break
        time.sleep(1)

hour = int(input("アラームを設定する時刻(時)を入力してください(24時間制): "))
minute = int(input("アラームを設定する時刻(分)を入力してください: "))
set_alarm(hour, minute)


14. フォルダ監視ツール

用途

指定したフォルダ内で新しいファイルが追加されたり削除されたりしたときに通知します。

import os
import time

def watch_folder(folder):
    print(f"フォルダ {folder} を監視します...")
    before = set(os.listdir(folder))
    while True:
        time.sleep(1)
        after = set(os.listdir(folder))
        added = after - before
        removed = before - after
        if added:
            print(f"追加されたファイル: {', '.join(added)}")
        if removed:
            print(f"削除されたファイル: {', '.join(removed)}")
        before = after

folder = input("監視したいフォルダのパスを入力してください: ")
watch_folder(folder)


15. 簡易タイマー

用途

簡単なカウントダウンタイマーとして使えます。料理や短時間の休憩に便利です。

import time

def countdown_timer(seconds):
    print(f"{seconds}秒のタイマーを開始します!")
    while seconds > 0:
        mins, secs = divmod(seconds, 60)
        time_format = f"{mins:02}:{secs:02}"
        print(time_format, end='\r')
        time.sleep(1)
        seconds -= 1
    print("タイマーが終了しました!")

seconds = int(input("タイマーの時間(秒)を入力してください: "))
countdown_timer(seconds)


16. 音楽プレイリストシャッフルツール

用途

フォルダ内の音楽ファイルをランダムに再生するツールです。ちょっとしたリラックスタイムに使えます。

import os
import random
import pygame

def play_music(folder):
    music_files = [os.path.join(folder, f) for f in os.listdir(folder) if f.endswith(('.mp3', '.wav'))]
    if not music_files:
        print("音楽ファイルが見つかりませんでした。")
        return
    
    pygame.mixer.init()
    random.shuffle(music_files)
    for music in music_files:
        print(f"再生中: {os.path.basename(music)}")
        pygame.mixer.music.load(music)
        pygame.mixer.music.play()
        while pygame.mixer.music.get_busy():
            continue  # 再生中は待機

folder = input("音楽ファイルが入ったフォルダのパスを入力してください: ")
play_music(folder)


17. 天気予報取得ツール

用途

現在地や指定した都市の天気予報を取得します。外出前に役立ちます。 ※このツールにはAPIキーが必要です(例:OpenWeatherMapのAPIを利用)。

import requests

def get_weather(city, api_key):
    url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric&lang=ja"
    response = requests.get(url)
    if response.status_code == 200:
        data = response.json()
        print(f"都市: {data['name']}")
        print(f"天気: {data['weather'][0]['description']}")
        print(f"気温: {data['main']['temp']}°C")
        print(f"湿度: {data['main']['humidity']}%")
    else:
        print("天気情報を取得できませんでした。都市名を確認してください。")

api_key = "YOUR_API_KEY"  # OpenWeatherMapのAPIキー
city = input("天気を確認したい都市名を入力してください: ")
get_weather(city, api_key)


18. ショートカットキー設定ツール

用途

よく使うアプリケーションをショートカットキーで起動できるようにします。

import keyboard
import os

def open_application(key, app_path):
    print(f"{key} を押すと {app_path} を起動します。")
    keyboard.add_hotkey(key, lambda: os.startfile(app_path))
    keyboard.wait()  # ユーザーが終了するまで待機

key = input("ショートカットキーを入力してください(例: ctrl+alt+t): ")
app_path = input("起動したいアプリケーションのパスを入力してください(例: C:\\Windows\\System32\\notepad.exe): ")
open_application(key, app_path)


19. PDF結合ツール

用途

複数のPDFファイルを1つに結合します。資料整理やプレゼン準備に便利です。

from PyPDF2 import PdfMerger

def merge_pdfs(folder, output):
    merger = PdfMerger()
    for file in sorted(os.listdir(folder)):
        if file.endswith('.pdf'):
            merger.append(os.path.join(folder, file))
    merger.write(output)
    merger.close()
    print(f"PDFを結合しました: {output}")

folder = input("PDFがあるフォルダのパスを入力してください: ")
output = input("結合後のPDFの保存先を入力してください(例: merged.pdf): ")
merge_pdfs(folder, output)


20. ストレージ使用量モニター

用途

ディスクドライブの使用状況をリアルタイムでモニターします。

import shutil
import time

def monitor_storage(drive):
    while True:
        total, used, free = shutil.disk_usage(drive)
        print(f"ドライブ: {drive}")
        print(f"合計: {total // (2**30)} GB")
        print(f"使用済み: {used // (2**30)} GB")
        print(f"空き: {free // (2**30)} GB")
        time.sleep(5)

drive = input("モニターするドライブ名を入力してください(例: C:\\): ")
monitor_storage(drive)


21. タスクキラー

用途

指定したプロセス(アプリケーション)を強制終了します。タスクマネージャーの補助として使えます。

import psutil

def kill_process(name):
    for proc in psutil.process_iter(['pid', 'name']):
        if name.lower() in proc.info['name'].lower():
            print(f"プロセス {proc.info['name']} を終了します。")
            proc.terminate()

name = input("終了したいプロセス名を入力してください(例: chrome): ")
kill_process(name)


22. URLからQRコード生成ツール

用途

指定したURLをQRコードとして生成し、保存します。共有が便利になります。

import qrcode

def create_qr_code(data, file_name):
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_L,
        box_size=10,
        border=4,
    )
    qr.add_data(data)
    qr.make(fit=True)
    img = qr.make_image(fill='black', back_color='white')
    img.save(file_name)
    print(f"QRコードを保存しました: {file_name}")

data = input("QRコードに変換するURLまたはテキストを入力してください: ")
file_name = input("保存するファイル名を入力してください(例: qrcode.png): ")
create_qr_code(data, file_name)


23. タスクスケジュール管理ツール

用途

簡単なスケジュール管理アプリケーションを作成し、タスクを記録・確認します。

tasks = []

def add_task():
    task = input("新しいタスクを入力してください: ")
    tasks.append(task)
    print("タスクを追加しました!")

def view_tasks():
    print("現在のタスク:")
    for i, task in enumerate(tasks, 1):
        print(f"{i}. {task}")

while True:
    print("\n1: タスクを追加")
    print("2: タスクを表示")
    print("3: 終了")
    choice = input("選択肢を入力してください: ")
    if choice == "1":
        add_task()
    elif choice == "2":
        view_tasks()
    elif choice == "3":
        print("アプリケーションを終了します。")
        break
    else:
        print("無効な選択です。")

さらにWindowsユーザーの日常利用に役立つPythonプログラムを追加していきます!


24. ファイルの重複チェックツール

用途

フォルダ内にある重複したファイルを検出し、整理する際に便利です。

import os
import hashlib

def calculate_hash(file_path):
    with open(file_path, "rb") as f:
        return hashlib.md5(f.read()).hexdigest()

def find_duplicates(folder):
    hashes = {}
    duplicates = []
    for root, dirs, files in os.walk(folder):
        for file in files:
            file_path = os.path.join(root, file)
            file_hash = calculate_hash(file_path)
            if file_hash in hashes:
                duplicates.append((file_path, hashes[file_hash]))
            else:
                hashes[file_hash] = file_path
    return duplicates

folder = input("重複ファイルを探したいフォルダのパスを入力してください: ")
duplicates = find_duplicates(folder)
if duplicates:
    print("重複ファイルが見つかりました:")
    for dup in duplicates:
        print(f"重複: {dup[0]} と {dup[1]}")
else:
    print("重複ファイルは見つかりませんでした。")


25. スクリーンタイム計測ツール

用途

特定のアプリケーション(例: Chrome)を使用している時間を計測し、スクリーンタイムを管理します。

import psutil
import time

def track_app_usage(app_name):
    start_time = None
    while True:
        is_running = any(app_name.lower() in (p.info["name"] or "").lower() for p in psutil.process_iter(["name"]))
        if is_running:
            if not start_time:
                start_time = time.time()
        else:
            if start_time:
                elapsed = time.time() - start_time
                print(f"{app_name} の使用時間: {elapsed // 60:.0f} 分 {elapsed % 60:.0f} 秒")
                start_time = None
        time.sleep(5)

app_name = input("使用時間を計測したいアプリケーション名を入力してください(例: chrome): ")
track_app_usage(app_name)


26. PDFページ抽出ツール

用途

PDFファイルから特定のページだけを抽出し、新しいファイルとして保存します。

from PyPDF2 import PdfReader, PdfWriter

def extract_pages(input_pdf, output_pdf, start_page, end_page):
    reader = PdfReader(input_pdf)
    writer = PdfWriter()
    for i in range(start_page - 1, end_page):
        writer.add_page(reader.pages[i])
    with open(output_pdf, "wb") as output:
        writer.write(output)
    print(f"ページを抽出しました: {output_pdf}")

input_pdf = input("抽出元のPDFファイルパスを入力してください: ")
output_pdf = input("保存先のファイル名を入力してください(例: extracted.pdf): ")
start_page = int(input("抽出開始ページを入力してください: "))
end_page = int(input("抽出終了ページを入力してください: "))
extract_pages(input_pdf, output_pdf, start_page, end_page)


27. フォルダバックアップツール

用途

指定したフォルダをバックアップするスクリプトです。バックアップ先を指定して定期的に実行すると便利です。

import os
import shutil

def backup_folder(source, destination):
    if not os.path.exists(source):
        print("バックアップ元フォルダが存在しません。")
        return
    if not os.path.exists(destination):
        os.makedirs(destination)
    backup_path = os.path.join(destination, os.path.basename(source))
    shutil.copytree(source, backup_path, dirs_exist_ok=True)
    print(f"フォルダをバックアップしました: {backup_path}")

source = input("バックアップ元のフォルダパスを入力してください: ")
destination = input("バックアップ先のフォルダパスを入力してください: ")
backup_folder(source, destination)


28. シンプルな家計簿ツール

用途

日々の収支を記録し、合計を計算するシンプルな家計簿です。

import csv

def add_transaction(file, amount, description):
    with open(file, "a", newline="") as f:
        writer = csv.writer(f)
        writer.writerow([amount, description])
    print("取引を記録しました。")

def show_balance(file):
    total = 0
    try:
        with open(file, "r") as f:
            reader = csv.reader(f)
            for row in reader:
                total += float(row[0])
    except FileNotFoundError:
        print("家計簿ファイルがありません。")
    print(f"現在の合計: {total:.2f}円")

file = "kakeibo.csv"
while True:
    print("\n1: 取引を記録")
    print("2: 合計を表示")
    print("3: 終了")
    choice = input("選択肢を入力してください: ")
    if choice == "1":
        amount = float(input("金額を入力してください(例: -500 for 支出, 1000 for 収入): "))
        description = input("取引の説明を入力してください: ")
        add_transaction(file, amount, description)
    elif choice == "2":
        show_balance(file)
    elif choice == "3":
        print("家計簿を終了します。")
        break
    else:
        print("無効な選択肢です。")


29. 動画フォーマット変換ツール

用途

特定のフォルダ内の動画を指定したフォーマットに変換します。(例: MP4に変換) ※FFmpegをインストールしている必要があります。

import os

def convert_videos(folder, output_format):
    for file in os.listdir(folder):
        if file.endswith(('.avi', '.mkv', '.mov')):  # 変換元のフォーマットを指定
            input_path = os.path.join(folder, file)
            output_path = os.path.join(folder, os.path.splitext(file)[0] + output_format)
            os.system(f"ffmpeg -i \"{input_path}\" \"{output_path}\"")
            print(f"変換完了: {output_path}")

folder = input("変換したい動画があるフォルダのパスを入力してください: ")
output_format = input("変換後のフォーマットを入力してください(例: .mp4): ")
convert_videos(folder, output_format)


30. ストップウォッチ

用途

作業時間の計測に役立つシンプルなストップウォッチです。

import time

def stopwatch():
    print("Enterキーで開始、再度Enterキーで停止します。")
    input("準備ができたらEnterキーを押してください...")
    start_time = time.time()
    input("停止するにはEnterキーを押してください...")
    elapsed_time = time.time() - start_time
    print(f"経過時間: {elapsed_time:.2f} 秒")

stopwatch()


これらのツールは、日常の業務や趣味に役立つものばかりです。少しずつ試して、自分の用途に合わせて改良してみてください!








セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。