【Python標準ライブラリ入門 第10回】日常をちょこっと便利に!timeモジュールとwebbrowserモジュール活用術 🕰️🌐
「プログラムの処理を一定時間止めたいんだけど、どうすればいい?」
「Pythonスクリプトから、自動でWebサイトを開けたら便利だなあ…」
「前回までの内容は少し難しかったから、今回はもっと手軽に試せる機能が知りたい!」
「こんにちは! Python標準ライブラリ探検隊、隊長のPythonistaです! 前回はcollectionsモジュールの便利な仲間たちで、defaultdict
でキーエラーの心配を減らしたり、Counter
で要素の出現回数を簡単に集計したり、deque
で効率的な両端操作を実現したりと、データ処理をよりスマートに、そしてPythonicにするための便利なデータ構造たちを探検しましたね。Pythonの基本的なデータ構造だけでは少し手間だった作業も、グッと楽になったのではないでしょうか。」
シリーズ第10回の今回は、少し肩の力を抜いて、日常の「ちょっとしたこと」をPythonで便利にする2つの標準ライブラリ、time
モジュールとwebbrowser
モジュールをご紹介します! time
モジュールを使えば、プログラムの実行タイミングを制御したり、簡単な処理時間を計測したりできます。そしてwebbrowser
モジュールを使えば、Pythonスクリプトから簡単にWebブラウザを起動してお気に入りのサイトを開く、なんてことも可能になります。どちらも数行のコードで試せる手軽さが魅力です。さあ、Pythonで日常をちょこっとアップグレードしてみましょう!(その他の投稿はこちら)
1. time
モジュール:時間と賢く付き合う
time
モジュールは、時間に関連する様々な機能を提供します。以前紹介したdatetime
モジュールが具体的な日付や時刻そのものを扱うのに長けているのに対し、time
モジュールは、Unixタイムスタンプ(コンピュータ内部で時間を扱う基準の一つ)、プログラムの実行の一時停止、処理時間の計測など、よりシステムに近い時間操作やユーティリティ機能を提供します。
1.1. モジュールのインポート
import time
1.2. プログラムの実行を一時停止する:time.sleep(seconds)
time.sleep(seconds)
関数は、指定した秒数だけプログラムの実行を一時的に停止させます。これは、例えば以下のような場面で非常に役立ちます。
- Webサイトから情報を連続して取得する(スクレイピングなど)際に、相手サーバーに負荷をかけすぎないようにアクセス間隔を空ける。
- 処理の進行をゆっくり見せたい場合や、簡単なアニメーションを作成する場合。
- 何らかの処理が完了するのを待つ場合(ただし、より高度な非同期処理などもあります)。
import time
print("処理を開始します。")
time.sleep(3) # 3秒間停止
print("3秒経過しました。処理を再開します。")
time.sleep(1.5) # 1.5秒間停止 (浮動小数点数も指定可能)
print("さらに1.5秒経過。処理完了です。")
実行すると、メッセージが時間差で表示されるのが確認できます。
1.3. 現在の時間を取得する:time.time()
と time.ctime()
time.time()
: UTC(協定世界時)での1970年1月1日0時0分0秒(エポック)からの経過秒数を浮動小数点数で返します。これを「Unixタイムスタンプ」と呼びます。主に処理時間の計測などに使われます。time.ctime([secs])
: 引数secs
にUnixタイムスタンプ(省略した場合はtime.time()
の現在時刻)を指定すると、それを人間が読みやすい形式の現地時間の文字列(例:'Wed May 28 21:30:00 2025'
)に変換して返します。
import time
# 現在のUnixタイムスタンプ
current_timestamp = time.time()
print(f"\n現在のUnixタイムスタンプ: {current_timestamp}")
# 現在時刻を読みやすい文字列で表示
current_time_str = time.ctime()
print(f"現在の時刻 (ctime): {current_time_str}")
# 少し前のタイムスタンプを文字列に変換
past_timestamp = current_timestamp - (60 * 60 * 24) # 24時間前
past_time_str = time.ctime(past_timestamp)
print(f"24時間前の時刻 (ctime): {past_time_str}")
1.4. 簡単な処理時間計測
time.time()
を使うと、ある処理にかかった時間を簡単に計測できます。
import time
start_time = time.time() # 処理開始前の時刻を記録
# 時間を計測したい処理 (例: 0から999999までの合計を計算)
total = 0
for i in range(1000000):
total += i
print(f"\n計算結果: {total}") # このprintは計測に影響するが、例として
end_time = time.time() # 処理終了後の時刻を記録
elapsed_time = end_time - start_time # 経過時間を計算
print(f"処理にかかった時間: {elapsed_time:.4f} 秒") # 小数点以下4桁まで表示
より精密なパフォーマンス測定にはtime.perf_counter()
やtimeit
モジュールなどがありますが、time.time()
でもおおよその処理時間は把握できます。
2. webbrowser
モジュール:PythonからWebブラウザを操作!
webbrowser
モジュールを使うと、PythonスクリプトからデフォルトのWebブラウザを起動し、指定したURLのページを自動的に開くことができます。非常にシンプルで使いやすいモジュールです。
2.1. モジュールのインポート
import webbrowser
2.2. 指定したURLをブラウザで開く:webbrowser.open()
最も基本的な使い方はwebbrowser.open(url, new=0, autoraise=True)
です。
url
: 開きたいWebページのURL文字列。new
(オプション):0
: 可能であれば同じブラウザウィンドウで開く(デフォルト)。1
: 可能であれば新しいブラウザウィンドウで開く。2
: 可能であれば新しいブラウザタブで開く。
autoraise
(オプション):True
の場合、可能であればブラウザウィンドウを前面に表示します(デフォルト)。
import webbrowser
import time
print("\n3秒後にGoogleを開きます...")
time.sleep(3)
webbrowser.open('https://www.google.com')
print("\nさらに3秒後、新しいタブでPython公式サイトを開きます...")
time.sleep(3)
webbrowser.open_new_tab('https://www.python.org') # open(url, new=2) とほぼ同じ
print("\nさらに3秒後、新しいウィンドウであなたのブログを開きます (URLは適宜変更してください)...")
time.sleep(3)
# webbrowser.open_new('あなたのブログのURL') # open(url, new=1) とほぼ同じ
このスクリプトを実行すると、順番にWebブラウザで指定したページが開かれます(環境によってはブラウザの挙動が異なる場合があります)。
2.3. 活用アイデア
- 毎朝チェックするサイトをまとめて開くスクリプト: ニュースサイト、天気予報、メールなどを起動時に一気に開く。
- 検索を自動化するスクリプト: 特定のキーワードで複数の検索エンジンの結果ページを開く。
import webbrowser from urllib.parse import quote_plus # URLエンコード用 (urllib.parseも標準ライブラリ) search_term = "Python 標準ライブラリとは" encoded_term = quote_plus(search_term) # 日本語などをURLで使えるようにエンコード webbrowser.open_new_tab(f"https://www.google.com/search?q={encoded_term}") webbrowser.open_new_tab(f"https://duckduckgo.com/?q={encoded_term}")
- プログラムの処理結果に応じて関連ページを開く: 例えば、エラーが発生したらそのエラーに関するドキュメントページを開くなど。
まとめ:time
とwebbrowser
で日常作業をちょっと便利に!
今回は、Pythonの標準ライブラリの中から、日常のちょっとした作業を便利にするtime
モジュールとwebbrowser
モジュールをご紹介しました。
time
モジュール:time.sleep()
でプログラムの実行を一時停止。time.time()
やtime.ctime()
で現在時刻を取得・表示。- 簡単な処理時間の計測。
webbrowser
モジュール:webbrowser.open()
やwebbrowser.open_new_tab()
で指定したURLをブラウザで開く。
これらのモジュールは、他のより複雑なモジュールと比べると機能はシンプルですが、その手軽さゆえに様々な場面でサッと使えて便利な「小技」として役立ちます。特にtime.sleep()
は、Webスクレイピングを行う際のマナーとしてサーバーに負荷をかけないようにアクセス間隔を調整するのに必須の機能ですし、webbrowser
は情報収集の効率化に繋がります。
プログラムに「時間」という概念を導入したり、外部のWebブラウザと連携させたりすることで、あなたのPythonスクリプトはよりインタラクティブで実用的なものになるでしょう。ぜひ、色々なアイデアを試してみてください!
さて、この標準ライブラリ探検隊も長くなってきました。次回はいよいよ、これまで学んだ知識を総動員して、もう少し大きな「便利ツール」作りに挑戦してみましょうか?お楽しみに!
【Python標準ライブラリ集大成 第11回】合わせ技で最強ツール開発!ファイル自動整理&バックアップスクリプトを作ろう!
コメント
コメントを投稿