renumber_slides.py

概要

renumber_slides.py は、テキストファイル(主にMarkdown形式など)内のスライド番号を自動的に振り直すユーティリティスクリプトです。 ファイル内で # Slide N ( N は任意の数字)の形式で記述された見出し行を検索し、ファイルの先頭から順に1から始まる連番に置き換え、元のファイルを上書き保存します。

依存関係

本スクリプトはPythonの標準ライブラリのみを使用しており、外部ライブラリ(非標準ライブラリ)への依存はありません。

  • sys

  • re

入出力仕様

入力

  • コマンドライン引数で指定されたテキストファイル。

  • ファイルのエンコーディングは utf-8 を前提として読み込まれます。

  • 正規表現パターン ^#\s*Slide\s+(\d+)(.*)$ に一致する行をスライド見出しとして認識し、処理対象とします。

出力

  • 入力として指定されたテキストファイルを、更新された内容で上書き保存します(エンコーディングは utf-8 )。

  • 標準出力に対して、対象ファイルのオープン通知、変更内容(変更前の行と変更後の行の対比)、および処理完了メッセージを出力します。

オプション

本スクリプトには特定のコマンドラインオプションフラグは実装されていません。 実行時には必ず1つの引数(対象ファイルパス)を指定する必要があります。引数が指定されなかった場合は、使用方法を示すメッセージを標準出力に表示し、終了コード 1 でプログラムを終了します。

実行例

スクリプトの引数として、番号を振り直したいファイルのパスを指定して実行します。

python renumber_slides.py your_slide_file.md

処理フロー

  1. コマンドライン引数から処理対象のファイルパスを取得します。

  2. 指定されたファイルを読み込みモード( r )で開き、すべての行をメモリ( lines リスト)に読み込みます。

  3. スライドの連番を管理する変数( slide_no )を 1 で初期化します。

  4. 読み込んだ行を先頭から順に確認し、正規表現を用いて # Slide N ... のパターンを検索します。

  5. パターンに一致した場合、以下の処理を行います。

    • 行の数字部分を現在の連番( slide_no )に置き換えます。

    • 後続のテキスト( rest )を結合して新しい行を作成します。

    • 変更内容を標準出力に表示し、 slide_no をインクリメントします。

  6. パターンに一致しない行は変更せずにそのまま保持します。

  7. すべての行の処理が完了した後、指定されたファイルを書き込みモード( w )で開き、更新された内容( new_lines )で元のファイルを上書き保存します。

  8. 完了メッセージを標準出力に表示し、処理を終了します。