merge_text_files プログラム仕様
- 概要:
指定ディレクトリ内のテキストファイルを検索し、メタデータを付与して1つのファイルに結合します。
- 詳細説明:
拡張子やパターンでファイルを絞り込み、指定した階層まで再帰的に検索することが可能です。 出力ファイルには各ファイルの内容に加えて、パスやファイル種別の情報がヘッダとして記録されます。
- 関連リンク:
merge_text_files_usage
- merge_text_files.collect_files(root: Path, patterns: list[str], recursive: bool, max_depth: int, output_path: Path | None) list[Path]
- 概要:
指定された条件に基づき、対象となるファイルを収集します。
- 詳細説明:
ルートディレクトリ以下を検索し、階層やパターンに一致するファイルのリストを返します。 出力ファイル自身のパスが含まれる場合は除外します。
- 引数:
- param root:
検索を開始するルートディレクトリのパス。
- type root:
pathlib.Path
- param patterns:
検索対象となるファイル名やパスのパターンリスト。
- type patterns:
list[str]
- param recursive:
サブディレクトリを再帰的に検索するかどうか。
- type recursive:
bool
- param max_depth:
検索する最大階層。
- type max_depth:
int
- param output_path:
除外対象となる出力ファイルのパス。
- type output_path:
pathlib.Path | None
- 戻り値:
- returns:
条件に一致したファイルパスのソート済みリスト。
- rtype:
list[pathlib.Path]
- merge_text_files.guess_type(path: Path) str
- 概要:
ファイルパスの拡張子からファイル種別を判定します。
- 引数:
- param path:
判定するファイルのパス。
- type path:
pathlib.Path
- 戻り値:
- returns:
ファイル種別を表す文字列。
- rtype:
str
- merge_text_files.is_within_depth(path: Path, root: Path, max_depth: int) bool
- 概要:
対象ファイルが指定された最大階層の範囲内にあるか判定します。
- 詳細説明:
max_depth がマイナスの場合は常に真を返します。
- 引数:
- param path:
判定対象のファイルパス。
- type path:
pathlib.Path
- param root:
基準となるルートディレクトリのパス。
- type root:
pathlib.Path
- param max_depth:
許可される最大階層。
- type max_depth:
int
- 戻り値:
- returns:
範囲内の場合は真、それ以外は偽。
- rtype:
bool
- merge_text_files.main() None
- 概要:
コマンドライン引数を解析し、ファイルの検索と結合処理を実行します。
- 詳細説明:
引数で指定されたルートディレクトリやパターンをもとにファイルを収集し、結合して出力します。 引数のチェックを行い、条件を満たさない場合は例外を発生させます。
- 戻り値:
- returns:
なし。
- rtype:
None
- 例外:
- raises FileNotFoundError:
ルートディレクトリが存在しない場合。
- raises NotADirectoryError:
ルートパスがディレクトリではない場合。
- raises ValueError:
blank_lines オプションに5未満が指定された場合。
- merge_text_files.match_any(path: Path, root: Path, patterns: list[str]) bool
- 概要:
ファイルのパスがいずれかのパターンに一致するか判定します。
- 詳細説明:
ファイル名のみ、またはルートディレクトリからの相対パスに対してマッチングを行います。
- 引数:
- param path:
判定対象のファイルパス。
- type path:
pathlib.Path
- param root:
基準となるルートディレクトリのパス。
- type root:
pathlib.Path
- param patterns:
マッチングに使用するワイルドカードパターンのリスト。
- type patterns:
list[str]
- 戻り値:
- returns:
いずれかのパターンに一致した場合は真、それ以外は偽。
- rtype:
bool
- merge_text_files.merge_files(root: Path, files: list[Path], output_path: Path, encoding: str, blank_lines: int) None
- 概要:
収集したファイルを読み込み、メタデータを付加して1つのファイルに結合します。
- 詳細説明:
各ファイルの内容は開始と終了の区切り文字列で囲まれ、指定した空行数で区切られます。
- 引数:
- param root:
ファイルの相対パスを計算するためのルートディレクトリ。
- type root:
pathlib.Path
- param files:
結合対象となるファイルパスのリスト。
- type files:
list[pathlib.Path]
- param output_path:
結合結果を書き込む出力ファイルのパス。
- type output_path:
pathlib.Path
- param encoding:
読み書きに使用するテキストのエンコーディング。
- type encoding:
str
- param blank_lines:
ファイル間に挿入する空行の数。
- type blank_lines:
int
- 戻り値:
- returns:
なし。
- rtype:
None
- merge_text_files.read_text_file(path: Path, encoding: str) str
- 概要:
指定されたエンコーディングでテキストファイルを読み込みます。
- 詳細説明:
デコードエラーが発生した場合は utf-8-sig で代替文字を使って読み直します。
- 引数:
- param path:
読み込むファイルのパス。
- type path:
pathlib.Path
- param encoding:
初回に使用するテキストのエンコーディング。
- type encoding:
str
- 戻り値:
- returns:
ファイルから読み込んだテキストデータ。
- rtype:
str