(ここに空行を入れる)

ライブラリ tkutils.py

ライブラリの機能や目的

tkutils.py ライブラリは、Pythonアプリケーション開発において頻繁に利用される様々なユーティリティ機能を提供するモジュールです。ファイル操作、データ変換、システム情報取得、エラーハンドリングといった一般的なタスクを効率化するための関数群を含んでいます。

主な目的と機能は以下の通りです。

  • ファイルシステム操作: ファイルやディレクトリのパスの結合、分割、存在確認、ファイルの一覧取得、コピー、リネーム、削除、環境変数の操作など。

  • データ変換と整形: 文字列から数値への変換、数値の文字列フォーマット、リストや辞書からの安全なデータ取得、2次元リストの転置、リストのソートなど。

  • 文字列処理: コメントの削除、変数プレースホルダの置換、引用符付き文字列の分割、Unicode正規化など。

  • システム情報とプロセス管理: OS情報の取得、実行中プロセスの表示と終了(対話形式)、実行可能ファイルの検索など。

  • エラーハンドリングとデバッグ: カスタムエラーの発生、例外ハンドラの設置、現在のコード位置の取得と表示、Pythonデバッガへの移行。

  • CSVファイル操作: CSVファイルの読み書き(辞書形式、リスト形式など多様なフォーマットに対応)。

  • グラフスタイル: Matplotlibと連携し、グラフの色、線種、マーカーの定義と取得。

このライブラリは、様々な場面で発生する共通の課題に対し、再利用可能なユーティリティ関数を提供することで、開発者がより本質的なロジックに集中できるよう支援することを目的としています。

importする方法

このライブラリはPythonモジュールとして設計されており、他のPythonプログラムから標準的な import 文を使用して機能を利用できます。

import tkutils

# tkutils モジュール内の関数を呼び出す例
result = tkutils.is_file("path/to/your/file.txt")
print(result)

# 特定の関数のみをインポートする例
from tkutils import get_os, get_fullpath

os_name = get_os()
full_path = get_fullpath("relative/path.txt")
print(f"OS: {os_name}, Full path: {full_path}")

必要な非標準ライブラリとインストール方法

tkutils.py は、以下の非標準ライブラリに依存しています。これらのライブラリは pip コマンドを使用してインストールできます。

  • psutil: システムのプロセスやシステム利用率に関する情報を取得するためのライブラリ。

    pip install psutil
    
  • numpy: 数値計算を効率的に行うためのPythonライブラリ。主に配列操作や数値変換に使用されます。

    pip install numpy
    
  • matplotlib: グラフ描画やデータ可視化のためのPythonライブラリ。グラフスタイル関連の機能で使用されます。

    pip install matplotlib
    

また、このライブラリは tklib.tkimport, tklib.tkobject, tklib.tkre というモジュールをインポートしていますが、これらは tkutils.py と同じプロジェクト内にあるカスタムライブラリであると想定されます。これらは標準的な pip コマンドではインストールできません。もしこれらのモジュールが不足している場合、tkutils.py の完全な機能を利用するためには、これらの tklib 関連モジュールを別途入手し、Pythonのパスが通っている場所に配置する必要があります。

importできる変数と関数

変数

  • linestyles (list[str]): グラフ描画に使用できる線種の名前のリストです。 例: ['solid', 'dashed', 'dashdot', 'dotted']

  • colors (list[str]): グラフ描画に使用できる色の名前のリストです。 例: ['black', 'red', 'blue', ...]

  • markers (list[str]): グラフ描画に使用できるマーカーシンボルのリストです。

  • nlinestyles (int): linestyles リストの要素数です。

  • ncolors (int): colors リストの要素数です。

  • nmarkers (int): markers リストの要素数です。

  • GREEK_MAP (dict[str, str]): 英語のギリシャ文字名(大文字・小文字)を対応するUnicodeギリシャ文字にマッピングする辞書です。

  • pattern_int (re.Pattern): 整数値を判定するための正規表現パターンオブジェクトです。

  • pattern_float (re.Pattern): 浮動小数点数値を判定するための正規表現パターンオブジェクトです。

関数

  • convert_color(color: str | None) -> str | None 色名を標準的なMatplotlibのCSS4_COLORS形式に変換します。 与えられた色名がMatplotlibのCSS4_COLORSに存在する場合、その標準的な表記を返します。存在しない場合は、元の色名をそのまま返します。

    • param color: 変換する色名(文字列)またはNone。

    • returns: 標準形式に変換された色名、または元の色名、またはNone。

  • graph_style_idx(idx: int) -> tuple[str, str] インデックスに基づいてグラフの色と線種を取得します。 与えられたインデックスを基に、定義済みの色と線種のリストから適切な組み合わせを選択して返します。

    • param idx: スタイルを取得するためのインデックス。

    • returns: 色と線種のタプル。

  • remove_comments(line: str) -> str 文字列からコメント部分を削除します。 文字列リテラル内の#は保護し、それ以外の行末から#以降の部分をコメントとして削除します。

    • param line: コメントを含む可能性のある文字列。

    • returns: コメントが削除された文字列。

  • raise_error(desc: str = "custom error") -> None カスタムエラーを発生させます。 指定された説明文でCustomError例外を発生させます。

    • param desc: エラーの説明。

    • raises CustomError: 指定された説明を持つカスタムエラー。

  • get_position(self: object | None = None, _class: type | None = None) -> dict[str, str | int] 現在のコードのファイル名、関数名、行番号を取得します。 呼び出し元のフレーム情報を利用して、コードが実行されている位置に関する情報を辞書で返します。_classが指定された場合はクラス名、selfが指定された場合はインスタンスのクラス名も含まれます。

    警告: この関数は、line変数を定義せずに使用しているため、常にエラーが発生します。

    • param self: メソッド内で呼び出す場合のインスタンス (オプション)。

    • param _class: クラス内で呼び出す場合のクラス (オプション)。

    • returns: ファイル名、関数名、および現在の行番号を含む辞書。

  • get_position_str(self: object | None = None, _class: type | None = None) -> str 現在のコードのファイル名、関数名、行番号を含む文字列を取得します。 呼び出し元のフレーム情報を利用して、コードが実行されている位置に関する情報を整形された文字列で返します。_classが指定された場合はクラス名、selfが指定された場合はインスタンスのクラス名も含まれます。

    警告: この関数は、line_number変数を定義せずに使用しているため、常にエラーが発生します。

    • param self: メソッド内で呼び出す場合のインスタンス (オプション)。

    • param _class: クラス内で呼び出す場合のクラス (オプション)。

    • returns: ファイル名、関数名、および現在の行番号を含む整形された文字列。

  • print_position(self: object | None = None, _class: type | None = None, exc_type: type | None = None, exc_value: Exception | None = None, exc_tb: types.TracebackType | None = None) -> None 現在のコードの位置情報と、オプションで例外情報を出力します。 呼び出し元のフレーム情報を利用して、現在のファイル名、関数名、行番号を標準出力に出力します。exc_type, exc_value, exc_tbが指定された場合は、詳細な例外情報も出力します。

    • param self: メソッド内で呼び出す場合のインスタンス (オプション)。

    • param _class: クラス内で呼び出す場合のクラス (オプション)。

    • param exc_type: 例外の型 (sys.exc_info()から取得)。

    • param exc_value: 例外の値 (sys.exc_info()から取得)。

    • param exc_tb: 例外のトレースバックオブジェクト (sys.exc_info()から取得)。

  • get_class(instance: object) -> type インスタンスのクラスを取得します。

    • param instance: クラスを取得したいインスタンス。

    • returns: インスタンスのクラスオブジェクト。

  • get_definition_position(obj: object | type) -> tuple[str, int] オブジェクト(クラスまたはインスタンス)の定義位置を取得します。 指定されたオブジェクトがクラスでない場合は、そのクラスの定義位置を取得します。

    • param obj: 定義位置を取得したいオブジェクトまたはクラス。

    • returns: ファイル名と行番号のタプル。

  • print_process(proc_name: str = '', username: str = '', print_level: int = 1) -> dict[int, dict] 現在実行中のプロセス情報を表示し、辞書として返します。 指定されたプロセス名やユーザー名に一致するプロセスを検索し、その情報を標準出力に表示します。各プロセスのPIDをキーとする辞書としてプロセス情報を返します。

    • param proc_name: 検索するプロセス名の一部 (オプション)。空文字列の場合は全てを対象。

    • param username: 検索するユーザー名の一部 (オプション)。'all'の場合は全てのユーザーを対象。

    • param print_level: 表示の詳細レベル。0の場合は表示せず、1の場合は詳細を表示。

    • returns: 各プロセスのPIDをキーとし、その情報を含む辞書。

  • kill_process_interactive(proc_name: str = '', username: str = '', pid: str = '', print_level: int = 1) -> None 対話形式でプロセスを終了させます。 指定されたプロセス名やユーザー名に一致するプロセスをリスト表示し、ユーザーからのPID入力に基づいてプロセスを強制終了させます。空のPIDを入力すると終了します。

    • param proc_name: 検索するプロセス名の一部 (オプション)。

    • param username: 検索するユーザー名の一部 (オプション)。

    • param pid: 終了させるプロセスのPID (対話モードではユーザー入力で上書きされます)。

    • param print_level: 表示の詳細レベル。0の場合は表示せず、1の場合は詳細を表示。

  • safe_getelement(var: dict | list, key: str | int, defval: object | None = None) -> object | None 辞書やリストから指定されたキー/インデックスに対応する要素を安全に取得します。 指定されたvarからkeyに対応する要素を返します。キーが存在しないなどのエラーが発生した場合は、defvalを返します。

    • param var: 要素を取得したい辞書またはリスト。

    • param key: 取得したい要素のキーまたはインデックス。

    • param defval: キーが見つからない場合に返すデフォルト値。

    • returns: 指定されたキーの要素、またはdefval

  • handle_exception(exc_type: type, exc_value: Exception, exc_tb: types.TracebackType) -> None 未処理の例外を処理し、エラー情報を表示します。 sys.excepthookに設定されることを意図しており、例外の種類、値、トレースバックを整形して出力します。最後にユーザーがEnterキーを押すまでプログラムの終了を一時停止します。

    • param exc_type: 例外の型 (sys.exc_info()から取得)。

    • param exc_value: 例外の値 (sys.exc_info()から取得)。

    • param exc_tb: 例外のトレースバックオブジェクト (sys.exc_info()から取得)。

  • set_exception(func: callable = handle_exception, print_level: int = 1) -> None デフォルトの例外ハンドラを設定します。 sys.excepthookに指定された関数を設定し、未処理の例外が発生した際の挙動をカスタマイズします。デフォルトではhandle_exceptionが設定されます。

    • param func: 例外ハンドラとして設定する関数。デフォルトはhandle_exception

    • param print_level: 情報表示の詳細レベル。1の場合は設定情報を表示。

  • is_numeric(var: object) -> bool 変数が数値型であるか、かつ無限大やNaNではないかを判定します。 Noneや文字列は数値とはみなされません。

    • param var: 判定する変数。

    • returns: 変数が数値型であり、かつ無限大やNaNではない場合はTrue、それ以外はFalse。

  • conv_float(val: float | object, format: str | None = "{:.10g}") -> str | object 浮動小数点数を指定されたフォーマットで文字列に変換します。 valが浮動小数点数の場合、format文字列を使用して整形し、それ以外の型の場合は元の値をそのまま返します。

    • param val: 変換する値。

    • param format: 浮動小数点数を整形するためのフォーマット文字列。Noneまたは空文字列の場合は整形しない。

    • returns: フォーマットされた文字列、または元の値。

  • pconv_by_type_one(s: str, type: type | str = 'str', defval: object | None = None, strict: bool = False) -> int | float | str | object | None 文字列を指定された単一の型に変換します。 strictがTrueの場合、厳密な変換を試み、失敗した場合はdefvalを返します。strictがFalseの場合は、pintpfloatのような柔軟な変換関数を使用します。

    • param s: 変換する文字列。

    • param type: 変換先の型 (int, float, strまたはその文字列名)。

    • param defval: 変換失敗時に返すデフォルト値。

    • param strict: 厳密な型変換を行うかどうかのフラグ。

    • returns: 変換された値、またはdefval

  • pconv_by_type(s: str, type: type | str | list[type | str] = 'str', defval: object | None = None, strict: bool = False) -> int | float | str | object | None 文字列を指定された複数の型候補の中から、最初に適合する型に変換します。 type引数はパイプ|で区切られた型名の文字列、または型オブジェクトのリストとして指定できます。変換が成功した時点でその値を返し、全ての型で失敗した場合はdefvalを返します。

    • param s: 変換する文字列。

    • param type: 変換先の型 (int, float, strまたはその文字列名)。パイプで区切られた文字列も可(例: 'int|float')。

    • param defval: 変換失敗時に返すデフォルト値。

    • param strict: 厳密な型変換を行うかどうかのフラグ。

    • returns: 変換された値、またはdefval

  • pconv(s: str | None, defval: object = 0, strict: bool = True) -> int | float | str | object 文字列を自動的に整数、浮動小数点数、または元の文字列に変換します。 まず整数への変換を試み、次に浮動小数点数への変換を試みます。どちらも失敗した場合は、元の文字列を返します。sがNoneの場合はdefvalを返します。

    • param s: 変換する文字列。

    • param defval: sがNoneの場合に返すデフォルト値。

    • param strict: この関数ではstrict引数は使用されません。

    • returns: 変換された整数、浮動小数点数、または元の文字列。sがNoneの場合はdefval

  • pint(s: str | None, defval: int | float = 0, strict: bool = True) -> int | float 文字列を整数に変換します。 まず文字列全体を整数として変換を試みます。strictがTrueで変換に失敗した場合、defvalを返します。strictがFalseで変換に失敗した場合、文字列内から数値パターンを検索し、そのパターンが整数として変換できればその値を返します。

    • param s: 変換する文字列。

    • param defval: 変換失敗時に返すデフォルト値。

    • param strict: 厳密な型変換を行うかどうかのフラグ。

    • returns: 変換された整数、またはdefval

  • pfloat(s: str | None, defval: float | object = 0.0, strict: bool = True) -> float | object 文字列を浮動小数点数に変換します。 まず文字列全体を浮動小数点数として変換を試みます。strictがTrueで変換に失敗した場合、defvalを返します。strictがFalseで変換に失敗した場合、文字列内から数値パターンを検索し、そのパターンが浮動小数点数として変換できればその値を返します。

    • param s: 変換する文字列。

    • param defval: 変換失敗時に返すデフォルト値。

    • param strict: 厳密な型変換を行うかどうかのフラグ。

    • returns: 変換された浮動小数点数、またはdefval

  • pintfloat(s: str | None, defval: float = 0.0, strict: bool = True) -> int | float 文字列を整数または浮動小数点数に変換します。 まず整数への変換を試み、失敗した場合は浮動小数点数への変換を試みます。どちらも失敗した場合はdefvalを返します。

    • param s: 変換する文字列。

    • param defval: 変換失敗時に返すデフォルト値。

    • param strict: pfloat関数に渡されるstrict引数。

    • returns: 変換された整数または浮動小数点数。

  • str2val(s: str | None) -> object | None 文字列を対応するPythonの値(None, True, False, 数値)に変換します。 'None', 'True', 'False'という文字列はそれぞれのPythonのキーワードに変換されます。それ以外の文字列はpconv関数で数値への変換を試みます。

    • param s: 変換する文字列。

    • returns: 変換されたPythonの値。

  • val2str(val: object | None) -> str | object Pythonの値を文字列に変換します(None, True, Falseを特別な文字列に変換)。 None, True, FalseのPythonキーワードをそれぞれの文字列リテラルに変換します。それ以外の値はそのまま返します。

    • param val: 変換する値。

    • returns: 変換された文字列、または元の値。

  • index2val(index: int | str, list_var: list, defval: tuple[object, object] = (None, None)) -> tuple[int | None, object | None] リストのインデックスまたは値から、対応するインデックスと値を取得します。 indexが整数の場合は直接リストのインデックスとして使用します。indexが文字列で数値として解釈できる場合はインデックスとして使用します。それ以外の場合、indexがリストの要素値として存在するかを検索します。見つからない場合はdefvalを返します。

    • param index: 検索するインデックスまたは値。

    • param list_var: 検索対象のリスト。

    • param defval: 見つからなかった場合に返すデフォルトのタプル (インデックス, 値)。

    • returns: 見つかったインデックスと値のタプル、またはdefval

  • format_strlist(vars: list[str | None], format: str, separator: str = ', ') -> str 文字列のリストを指定されたフォーマットと区切り文字で結合します。 リストの各要素をformat文字列で整形し、separatorで結合した単一の文字列を返します。要素がNoneの場合は"None"と出力されます。

    • param vars: 整形して結合する文字列のリスト。

    • param format: 各要素を整形するためのフォーマット文字列。

    • param separator: 要素間の区切り文字。

    • returns: フォーマットされ、結合された文字列。

  • print_line(data_list: list, format: str = '{:^10}') -> None データリストの要素を整形して1行で出力します。 各データ項目は指定されたformatで整形され、スペースなしで連結されて1行に出力されます。

    • param data_list: 出力するデータのリスト。

    • param format: 各データ項目を整形するためのフォーマット文字列。

  • print_data(labels: list[str] | list[list[str]], data_list: list[list], label_format: str = '{:^10}', data_format: str = '{:>10}', header: str | None = None, nmax: int | None = None, print_level: int = 0) -> None データを表形式で整形して出力します。 ラベルとデータリストを受け取り、指定されたフォーマットでヘッダーとデータを表形式で出力します。nmaxが指定されている場合、表示する行数を制限するためにデータをスキップすることがあります。

    • param labels: 列のラベルのリスト。ネストされたリスト/タプルもサポート。

    • param data_list: 各列のデータを含むリストのリスト。

    • param label_format: ラベルを整形するためのフォーマット文字列。

    • param data_format: データ項目を整形するためのフォーマット文字列。

    • param header: 表のヘッダーとして表示する文字列 (オプション)。

    • param nmax: 表示するデータ行の最大数。これを超える場合はスキップして表示。

    • param print_level: この引数は現在使用されていません。

  • pdb() -> None Pythonデバッガpdbのインタラクティブモードに入ります。 pdb.set_trace()を呼び出すことで、現在の実行コンテキストでデバッガを起動します。デバッガの使用方法に関する基本的なヒントも表示されます。

  • is_list(var: object) -> bool 変数がリストまたはタプルであるかを判定します。

    • param var: 判定する変数。

    • returns: 変数がリストまたはタプルのいずれかであればTrue、それ以外はFalse。

  • to_list(variable: object) -> list 様々な型の変数をリストに変換します。 NumPy配列、既存のリストなどのオブジェクトをPythonのリスト形式に変換して返します。Pandas DataFrame/Seriesについては、インポートされていないため、現在コメントアウトされています。

    • param variable: リストに変換する変数。

    • returns: 変換されたリスト。

  • minmax_xy(x: list[float] | None = None, y: list[float] | None = None, x0: float | None = None, xstep: float | None = None, xmin: float | None = None, xmax: float | None = None) -> tuple[float, float] x-yデータまたは関数からy値の最小値と最大値を計算します。 x0がNoneの場合は、xyのリストからxminxmaxの範囲内のyの最小値と最大値を計算します。x0が指定されている場合は、xが等間隔なデータであると仮定し、インデックス計算によって範囲を決定します。

    • param x: x座標のリスト。x0がNoneの場合に必須。

    • param y: y座標のリスト。

    • param x0: xデータの開始値 (等間隔データの場合)。

    • param xstep: xデータのステップ幅 (等間隔データの場合)。

    • param xmin: 評価範囲のx最小値。

    • param xmax: 評価範囲のx最大値。

    • returns: y値の最小値と最大値のタプル。

  • get_max_index(list: list | np.ndarray, axis: int = 0) -> int リスト(またはNumPy配列)の最大値のインデックスを取得します。 NumPyのarg_max関数を使用しますが、これはnp.argmaxの間違いである可能性があり、現在のコードではエラーになる可能性があります。

    • param list: 最大値のインデックスを検索するリストまたはNumPy配列。

    • param axis: NumPy配列の場合の軸。リストの場合は無視されます。

    • returns: 最大値のインデックス。

  • get_min_index(list: list | np.ndarray, axis: int) -> int リスト(またはNumPy配列)の最小値のインデックスを取得します。 NumPyのarg_min関数を使用しますが、これはnp.argminの間違いである可能性があり、現在のコードではエラーになる可能性があります。

    • param list: 最小値のインデックスを検索するリストまたはNumPy配列。

    • param axis: NumPy配列の場合の軸。リストの場合は無視されます。

    • returns: 最小値のインデックス。

  • find_range_indexes(x: list[float], xmin: float, xmax: float) -> tuple[int, int] ソートされたリストx内で、xminからxmaxの範囲に収まる要素のインデックス範囲を見つけます。 結果は、x[ix0]xmin以上になる最初のインデックスと、x[ix1-1]xmax以下になる最後のインデックス(排他的)のタプルです。

    • param x: ソートされた数値のリスト。

    • param xmin: 検索範囲の最小値。

    • param xmax: 検索範囲の最大値。

    • returns: 範囲内の開始インデックスと終了インデックス(排他的)のタプル。

  • transpose_list2d(data_list: list[list]) -> list[list] 2次元リストを転置します。 行と列を入れ替えた新しい2次元リストを生成します。

    • param data_list: 転置する2次元リスト。

    • returns: 転置された2次元リスト。

  • sort_lists(lists: list[list]) -> list[list] 複数のリストをまとめてソートします。 与えられたリストのリストを、最初のリストの要素を基準にソートし、他のリストの要素もそれに合わせて並べ替えます。

    • param lists: ソートする複数のリストを含むリスト。

    • returns: ソートされた複数のリストを含むリスト。

  • is_float(s: str | float) -> bool 文字列が浮動小数点数として解釈できるかを判定します。 引数sが既にfloat型であればTrueを返します。文字列の場合は、浮動小数点数のパターンにマッチするかを正規表現で判定します。

    • param s: 判定する文字列または数値。

    • returns: 浮動小数点数として解釈できる場合はTrue、それ以外はFalse。

  • is_int(s: str | int) -> bool 文字列が整数として解釈できるかを判定します。 引数sが既にint型であればTrueを返します。文字列の場合は、整数のパターンにマッチするかを正規表現で判定します。

    • param s: 判定する文字列または数値。

    • returns: 整数として解釈できる場合はTrue、それ以外はFalse。

  • analyze_varstr(str: str) -> object 変数文字列を解析します。 内部関数_analyze_varstrを呼び出して変数文字列の解析を行います。この関数はtklib.tkobjectに定義されているプライベートな関数をラップしています。

    • param str: 解析する変数文字列。

    • returns: 解析結果。具体的な型は_analyze_varstrの実装に依存。

  • split_optstr(str: str) -> tuple[float | str, int | None] オプション文字列を値とIDに分割します。 文字列がval:idの形式である場合、:で分割し、それぞれを浮動小数点数と整数に変換して返します。分割できない場合は、元の文字列とNoneを返します。

    • param str: 分割するオプション文字列。

    • returns: 値とIDのタプル。値は浮動小数点数、IDは整数、または元の文字列とNone。

  • quote_command_if_space(s: str | None, special_chars: str = "", quote_blank: bool = True) -> str | None スペースや特殊文字が含まれる文字列を引用符で囲みます。 コマンドライン引数などで、スペースや指定された特殊文字を含む文字列を適切に引用符で囲むことで、単一の引数として扱われるようにします。すでに引用符で囲まれている場合や、特定のパターンに一致する場合は処理をスキップします。

    • param s: 引用符で囲む可能性のある文字列。

    • param special_chars: 引用符で囲むべき特殊文字の正規表現パターン。

    • param quote_blank: この引数は現在使用されていません。

    • returns: 必要に応じて引用符で囲まれた文字列。

  • convert_by_vars(s: str, vars: dict[str, str], prefix: str = r'\$', bra: str = r'\(', ket: str = r'\)') -> str 文字列内の変数プレースホルダをvars辞書の値に置換します。 文字列sの中から、指定されたprefix (デフォルトは$) とbra/ket (デフォルトは()) で囲まれた変数名 (例: $(varname)) を探し、vars辞書から対応する値を取得して置換します。変数が見つからない場合は警告を出力し、??varname??に置換します。\$のようなエスケープされたプレフィックスはそのままのプレフィックスに変換されます。

    警告: 関数内部で定義されていないdebug変数やapp変数にアクセスしようとする箇所がありますが、これらの行はコメントアウトされているか、実行時にNameErrorが発生する可能性があります。

    • param s: 変数プレースホルダを含む文字列。

    • param vars: 変数名とその値を含む辞書。

    • param prefix: 変数名の前に付くプレフィックスの正規表現パターン。デフォルトはr'\$'

    • param bra: 変数名を囲む開始括弧の正規表現パターン。デフォルトはr'\('

    • param ket: 変数名を囲む終了括弧の正規表現パターン。デフォルトはr'\)'

    • returns: 変数が置換された文字列。

  • del_quote(s: str) -> str 文字列の先頭と末尾の引用符を削除します。 文字列が二重引用符または単一引用符で始まり、同じ引用符で終わる場合に、それらの引用符を削除します。文字列が短い場合や引用符で囲まれていない場合は、元の文字列をそのまま返します。

    • param s: 引用符を含む可能性のある文字列。

    • returns: 引用符が削除された文字列、または元の文字列。

  • add_quotation(str: str, quotation: str, quotation_original: str) -> str 文字列に引用符を追加します。 quotationパラメータに基づいて、文字列に引用符を追加、削除、または維持します。quotationが'remove'の場合は引用符を削除し、'keep'の場合はquotation_originalで囲みます。それ以外の場合はquotationで文字列を囲みます。

    • param str: 処理対象の文字列。

    • param quotation: 引用符の処理方法 ('remove', 'keep') または追加する引用符の種類。

    • param quotation_original: 'keep'モードで使用される元の引用符の種類(例: "')。

    • returns: 処理後の文字列。

  • split_quoted_args(s: str, sep: str = r'\s+', quotation: str = 'remove') -> list[str] 引用符で囲まれた引数を含む文字列を分割します。 スペースまたは指定された区切り文字で文字列を引数のリストに分割します。二重引用符または単一引用符で囲まれた部分は単一の引数として扱われます。quotationパラメータによって引用符の扱いは変更されます。

    • param s: 分割する引数文字列。

    • param sep: 引数を区切る正規表現パターン。デフォルトは空白文字。

    • param quotation: 引用符の処理方法 ('remove', 'keep')。

    • returns: 分割された引数のリスト。

  • split_two(s: str, sep: str = r'\s+', quotation: str = 'remove', defval: str = '') -> tuple[str, str] 文字列を最初の区切り文字で2つに分割します。 引用符で囲まれた部分を考慮して、文字列をコマンド部分と残りの部分に分割します。分割できない場合は、元の文字列とdefvalを返します。quotationパラメータによって引用符の扱いは変更されます。

    • param s: 分割する文字列。

    • param sep: 分割に使用する正規表現の区切り文字パターン。デフォルトは空白文字。

    • param quotation: 分割後の文字列の引用符の処理方法 ('remove', 'keep')。

    • param defval: 第二の部分が空の場合に返すデフォルト値。

    • returns: 分割された2つの文字列のタプル。

  • split_command_line(s: str, quotation: str = 'remove') -> tuple[str, str, list[str]] コマンドライン文字列をコマンドと引数リストに分割します。 与えられたコマンドライン文字列を、最初のトークンをコマンドとし、残りの部分を引用符で囲まれた引数を考慮してリストに分割します。

    • param s: 分割するコマンドライン文字列。

    • param quotation: 引数文字列の引用符の処理方法 ('remove', 'keep')。

    • returns: コマンド、残りの引数文字列、および分割された引数リストのタプル。

  • mprint(*args: Any, fp: io.TextIOBase | None = None, **kwargs: Any) -> None 標準出力とファイルオブジェクトの両方に印刷します。 print関数と同様に引数を受け取り、標準出力に表示するとともに、fpで指定されたファイルオブジェクトにも出力し、すぐにフラッシュします。

    • param args: print関数に渡す位置引数。

    • param fp: 出力先のファイルオブジェクト (オプション)。

    • param kwargs: print関数に渡すキーワード引数 (例: sep, end)。

  • get_path_list(varname: str = 'PATH') -> list[str] 指定された環境変数からパスのリストを取得します。 デフォルトでは'PATH'環境変数の値をos.pathsepで分割し、リストとして返します。

    • param varname: パスのリストを取得する環境変数名。

    • returns: 環境変数に含まれるパスのリスト。

  • desktop_name() -> str | None 現在のデスクトップ環境の名前を取得します。 Windowsの場合は'Windows'、macOSの場合は'Darwin'、Linuxの場合は'XDG_CURRENT_DESKTOP'環境変数の値、またはNoneを返します。

    • returns: デスクトップ環境の名前、またはNone。

  • add_path(path: str, varname: str = 'PATH') -> str 指定されたパスを環境変数に追加します。 varnameで指定された環境変数(デフォルトは'PATH')に新しいパスを追加します。パスが既に存在する場合は追加せず、現在の環境変数の値を返します。新しいパスは既存のパスのリストの先頭に追加されます。

    • param path: 環境変数に追加するパス。

    • param varname: パスを追加する環境変数名。

    • returns: 更新された環境変数の値。

  • normalize_str(str: str | None, conv_table: dict[int, str] | None = None, target_char: str = ' ', unicodedata_mode: str = 'NFKC') -> str | None 文字列を正規化します。 指定された変換テーブル (conv_table) を使用して文字を置換し、次にunicodedataモジュールで指定されたモード (unicodedata_mode) でUnicode正規化を行います。デフォルトでは、全角スペース、タブ、改行、カンマなどの空白文字や区切り文字を単一のスペースに変換します。

    • param str: 正規化する文字列。

    • param conv_table: str.maketransで作成された変換テーブル (オプション)。Noneの場合、デフォルトの変換テーブルが使用されます。

    • param target_char: デフォルトの変換テーブルで使用される変換先の文字。

    • param unicodedata_mode: unicodedata.normalizeで使用される正規化モード (例: 'NFKC', 'NFC')。

    • returns: 正規化された文字列、または元の文字列 (Noneの場合)。

  • normalize_name(name: str | None, conv_table: dict[int, str], unicodedata_mode: str = 'NFKC', upper_mode: str = 'upper') -> str | None 名前文字列を正規化します。 normalize_str関数を使用して空白文字や区切り文字を正規化し、余分なスペースを削除した後、指定されたupper_modeに基づいて大文字・小文字変換を行います。

    • param name: 正規化する名前文字列。

    • param conv_table: normalize_strに渡す変換テーブル。

    • param unicodedata_mode: unicodedata.normalizeで使用される正規化モード。

    • param upper_mode: 大文字・小文字変換モード ('upper', 'lower', 'capitalize', 'title', または何もしない)。

    • returns: 正規化された名前文字列。

  • add_dict(var: dict, key1: str | Any, key2: str | Any | None = None) -> None 辞書に要素を追加またはカウントをインクリメントします。 key2がNoneの場合、var[key1]の値を1インクリメントします。key2が指定されている場合、var[key1][key2]の値を1インクリメントします。キーが存在しない場合は初期値1で作成します。

    • param var: 操作対象の辞書。

    • param key1: 第一レベルのキー。

    • param key2: 第二レベルのキー (オプション)。

  • get_os_info(terse: bool = False) -> tuple[str, str, str, str] OSの情報を取得します。 platformモジュールを使用して、OSのシステム名、プラットフォーム情報、リリースバージョン、OSバージョンを返します。

    • param terse: プラットフォーム情報を簡潔に表示するかどうかのフラグ。

    • returns: システム名、プラットフォーム、リリースバージョン、OSバージョンのタプル。

  • get_os() -> str OSの名前(Windows, Darwin, Linuxなど)を取得します。 platform.system()の戻り値をそのまま返します。

    • returns: OSの名前を表す文字列。

  • is_windows() -> str | bool 現在のOSがWindowsであるかを判定します。 Windowsの場合、OSのバージョン文字列を返します。それ以外の場合はFalseを返します。

    • returns: Windowsの場合OSのバージョン文字列、それ以外はFalse。

  • is_mac() -> str | bool 現在のOSがmacOSであるかを判定します。 macOS (Darwin) の場合、OSのバージョン文字列を返します。それ以外の場合はFalseを返します。

    警告: 元のコードではplatform.systmem()と誤字があり、実行時にエラーとなります。

    • returns: macOSの場合OSのバージョン文字列、それ以外はFalse。

  • is_linux() -> str | bool 現在のOSがLinuxであるかを判定します。 Linuxの場合、OSのバージョン文字列を返します。それ以外の場合はFalseを返します。

    警告: 元のコードではplatform.systmem()と誤字があり、実行時にエラーとなります。

    • returns: Linuxの場合OSのバージョン文字列、それ以外はFalse。

  • getenv(key: str, defval: str | None = None) -> str | None 環境変数の値を取得します。 指定されたキーの環境変数が存在しない場合、defvalを返します。

    • param key: 取得する環境変数名。

    • param defval: 環境変数が存在しない場合に返すデフォルト値。

    • returns: 環境変数の値、またはdefval

  • setenv(key: str, val: str | None = None) -> None 環境変数を設定または削除します。 valがNoneの場合、指定されたキーの環境変数を削除します。それ以外の場合は、valで指定された値を環境変数に設定します。

    警告: 元のコードではif key in os.environ[key]:という条件式があり、これはkeyos.environに存在する場合にTypeErrorまたはKeyErrorを発生させる可能性があります。正しくはif key in os.environ:とすべきです。

    • param key: 設定または削除する環境変数名。

    • param val: 設定する値 (オプション)。Noneの場合、環境変数を削除。

  • GetPathDelimiter() -> str パス区切り文字を取得します。 os.sepを返します。これはOSによって'/'または'\'になります。

    • returns: パス区切り文字。

  • get_path_separator() -> str パス区切り文字を取得します。 os.sepを返します。これはOSによって'/'または'\'になります。GetPathDelimiterのエイリアスです。

    • returns: パス区切り文字。

  • get_PATH_env_separator() -> str 環境変数PATHの区切り文字を取得します。 os.pathsepを返します。これはOSによって':'または';'になります。

    • returns: 環境変数PATHの区切り文字。

  • get_ext_separator() -> str ファイルの拡張子区切り文字を取得します。 os.extsepを返します。これは常に'.'になります。

    • returns: 拡張子区切り文字。

  • is_dir(path: str | Path) -> bool 指定されたパスがディレクトリであるかを判定します。 os.path.isdir()を呼び出します。

    • param path: 判定するパス。

    • returns: パスがディレクトリであればTrue、それ以外はFalse。

  • IsDir(path: str | Path) -> bool 指定されたパスがディレクトリであるかを判定します。 is_dir関数のエイリアスです。

    • param path: 判定するパス。

    • returns: パスがディレクトリであればTrue、それ以外はFalse。

  • is_file(path: str | Path) -> bool 指定されたパスがファイルであるかを判定します。 os.path.isfile()を呼び出します。

    • param path: 判定するパス。

    • returns: パスがファイルであればTrue、それ以外はFalse。

  • IsFile(path: str | Path) -> bool 指定されたパスがファイルであるかを判定します。 is_file関数のエイリアスです。

    • param path: 判定するパス。

    • returns: パスがファイルであればTrue、それ以外はFalse。

  • is_exist(path: str | Path) -> bool 指定されたパスが存在するかを判定します。 os.path.exists()を呼び出します。

    • param path: 判定するパス。

    • returns: パスが存在すればTrue、それ以外はFalse。

  • Exists(path: str | Path) -> bool 指定されたパスが存在するかを判定します。 is_exist関数のエイリアスです。

    • param path: 判定するパス。

    • returns: パスが存在すればTrue、それ以外はFalse。

  • make_path(dir: str | Path, *args: str | Path) -> str パスの要素を結合して新しいパスを作成します。 os.path.join()を呼び出します。

    • param dir: ベースとなるディレクトリパス。

    • param args: 結合するパス要素。

    • returns: 結合された新しいパス。

  • MakePath(dir: str | Path, *args: str | Path) -> str パスの要素を結合して新しいパスを作成します。 make_path関数のエイリアスです。

    • param dir: ベースとなるディレクトリパス。

    • param args: 結合するパス要素。

    • returns: 結合された新しいパス。

  • get_fullpath(path: str | Path) -> str 指定されたパスの絶対パスを取得します。 os.path.abspath()を呼び出します。

    • param path: 絶対パスを取得する対象のパス。

    • returns: パスの絶対パス。

  • get_ext(path: str | Path) -> str ファイルの拡張子を取得します。 split_file_path関数を使用してパスを解析し、拡張子部分を返します。

    • param path: 拡張子を取得するファイルのパス。

    • returns: ファイルの拡張子 (例: '.txt', '.py')。拡張子がない場合は空文字列。

  • get_dirname(path: str | Path) -> str 指定されたパスのディレクトリ部分を取得します。 os.path.abspath()で絶対パスに変換後、os.path.dirname()でディレクトリ名を取得します。

    • param path: ディレクトリ部分を取得する対象のパス。

    • returns: パスのディレクトリ部分。

  • get_last_directory(path: str | Path, check_dir: bool = False) -> str パスの最後のディレクトリ名を取得します。 check_dirがTrueでパスが実際にディレクトリである場合は、そのディレクトリ名自体が返されます。それ以外の場合は、パスのディレクトリ部分の最後のセグメントが返されます。

    • param path: 最後のディレクトリ名を取得する対象のパス。

    • param check_dir: パスがディレクトリであるかを確認し、その場合特別な処理をするかどうかのフラグ。

    • returns: パスの最後のディレクトリ名。

  • get_upper_directory(path: str | Path) -> str 指定されたパスの上位ディレクトリ名を取得します。 split_file_path関数を使用してパスを解析し、親ディレクトリ部分を返します。

    • param path: 上位ディレクトリ名を取得する対象のパス。

    • returns: パスの上位ディレクトリ名。

  • split_drive(path: str | Path) -> tuple[str, str] パスをドライブ名と残りのパスに分割します。 Windows環境ではドライブレター(例: 'C:')とその後のパスに分割します。それ以外のOSでは、ドライブ名として空文字列を返し、元のパスをそのまま返します。

    警告: 元のコードではdirname_wo_drive = m.groups()[0]となっていますが、これはm.groups()[1]の間違いである可能性が高いです。現状のコードでは、ドライブ名と同じ文字列がdirname_wo_driveに代入されます。

    • param path: 分割するパス。

    • returns: ドライブ名とドライブ名を除いたパスのタプル。

  • split_file_path(path: str | Path, check_dir: bool = False) -> tuple[str, str, str, str] ファイルパスを構成要素(ディレクトリ名、ファイル名、ファイル本体、拡張子)に分割します。 指定されたパスを、ディレクトリ名、ベース名(ファイル名+拡張子)、ファイル本体(拡張子なしのファイル名)、拡張子に分割して返します。Windows環境ではバックスラッシュをスラッシュに一時的に変換して処理します。check_dirがTrueでパスがディレクトリの場合、特別な処理を行います。

    • param path: 分割するファイルパス。

    • param check_dir: パスがディレクトリであるかを確認し、その場合特別な処理をするかどうかのフラグ。

    • returns: (ディレクトリ名, ベース名, ファイル本体名, 拡張子) のタプル。

  • SplitFilePath(path: str | Path) -> tuple[str, str, str, str] ファイルパスを構成要素(ディレクトリ名、ファイル名、ファイル本体、拡張子)に分割します。 split_file_path関数のエイリアスです。

    • param path: 分割するファイルパス。

    • returns: (ディレクトリ名, ベース名, ファイル本体名, 拡張子) のタプル。

  • modify_path(path: str | Path, addpath: str) -> str ファイルパスのファイル本体部分を修正します。 既存のパスのディレクトリ部分を維持しつつ、ファイル本体名にaddpathを結合した新しいパスを作成します。

    • param path: 修正する元のファイルパス。

    • param addpath: ファイル本体名に追加する文字列。

    • returns: 修正された新しいファイルパス。

  • replace_path(path: str | Path, template: str, ext_dict: dict = {}) -> str ファイルパスをテンプレート文字列に基づいてフォーマットします。 与えられたファイルパスを絶対パス、ディレクトリ名、ファイル名、ファイル本体、拡張子に分解し、これらの情報を含む辞書を生成します。この辞書とext_dictを組み合わせて、template文字列をフォーマットします。

    • param path: フォーマットする元のファイルパス。

    • param template: フォーマットに使用するテンプレート文字列 (例: "{dirname}/{filebody}_new{ext}")。

    • param ext_dict: テンプレートに渡される追加の辞書。デフォルトのパス情報に上書きされることもあります。

    • returns: テンプレートに基づいてフォーマットされた文字列。

  • get_user_inifile_dir(env_vars: list[str] = ['HOME'], dir_names: list[str] = ['.']) -> str | None ユーザーの設定ファイルディレクトリを取得または作成します。 env_varsに指定された環境変数(デフォルトは'HOME')を順番に検索し、ユーザーのホームディレクトリを特定します。次にdir_namesに指定されたディレクトリ名(デフォルトは'.')を試行し、既存のディレクトリを見つけるか、新しく作成してそのパスを返します。

    • param env_vars: ユーザーのホームディレクトリを特定するための環境変数名のリスト。

    • param dir_names: ユーザー設定ファイル用のディレクトリ名のリスト。

    • returns: ユーザー設定ファイルディレクトリのパス、または見つからない場合はNone。

  • get_file_list(path: str | Path, filemask: str = '*.*', filename_only: bool = True) -> tuple[list[str], list[str]] 指定されたパス内のファイルとディレクトリのリストを取得します。 filemask(セミコロンで区切られた複数のマスクも可)に一致するファイルとディレクトリを検索します。filename_onlyがTrueの場合、ファイル名はベース名のみを返します。ディレクトリは[dirname]の形式で返され、[..]が先頭に追加されます。

    • param path: ファイルを検索するディレクトリパス。ファイルパスの場合、そのディレクトリが使用されます。

    • param filemask: 検索するファイルマスク (例: '.txt', '.log;*.dat')。

    • param filename_only: 結果のファイル名をベース名のみにするかどうかのフラグ。

    • returns: (ディレクトリ名のリスト, ファイル名のソート済みリスト) のタプル。

  • get_file_masks(key: str = 'executables') -> list[str] 指定されたキーに対応するファイルマスクのリストを取得します。 keyが'executables'の場合、Windows環境ではPATHEXT環境変数から実行可能ファイルの拡張子リストを取得します。それ以外のOSやキーでは、汎用的なファイルマスクを返します。

    • param key: 取得するファイルマスクのキー (例: 'executables')。

    • returns: ファイルマスクのリスト。

  • find_files(filename: str, start_dir: str | Path | None = None) -> list[str] 指定された開始ディレクトリ以下でファイルを検索します。 os.walk()を使用してディレクトリツリーを再帰的に走査し、fnmatch.fnmatch()filenameパターンに一致するファイルのフルパスのリストを返します。start_dirがNoneの場合、現在の作業ディレクトリから検索を開始します。

    警告: 元のコードではos.get.cwd()と誤字がありますが、これはos.getcwd()の間違いです。現状のコードはNameErrorとなるか、想定外の動作をする可能性があります。

    • param filename: 検索するファイルのパターン (例: 'my_file*.txt')。

    • param start_dir: 検索を開始するディレクトリパス (オプション)。

    • returns: 見つかったファイルのフルパスのリスト。

  • find_latest_file(filename: str, start_dir: str | Path | None = None, defval: object | None = None) -> str | None 指定された開始ディレクトリ以下で最新の更新日時を持つファイルを検索します。 find_files関数で指定されたパターンに一致する全てのファイルを検索し、その中で最終更新日時が最も新しいファイルのフルパスを返します。ファイルが見つからない場合はdefvalを返します。

    • param filename: 検索するファイルのパターン。

    • param start_dir: 検索を開始するディレクトリパス (オプション)。

    • param defval: ファイルが見つからない場合に返すデフォルト値。

    • returns: 最新の更新日時を持つファイルのフルパス、またはdefval

  • find_executable_path(filename: str, defval: object | None = None, filename_only: bool = False) -> str | None 実行可能ファイルのフルパスをPATH環境変数から検索します。 PATH環境変数に設定されている各ディレクトリを検索し、指定されたfilenameに一致する実行可能ファイルを探します。Windowsの場合、PATHEXT環境変数に含まれる拡張子も考慮します。

    • param filename: 検索する実行可能ファイルの名前。

    • param defval: ファイルが見つからない場合に返すデフォルト値。

    • param filename_only: フルパスではなくファイル名のみを返すかどうかのフラグ。

    • returns: 見つかった実行可能ファイルのフルパスまたはファイル名、またはdefval

  • search_executable_path(filenames: list[str], defval: object | None = None, filename_only: bool = False) -> str | None 複数の実行可能ファイル名から、最初にPATH環境変数で見つかったファイルのフルパスを検索します。 filenamesのリストを順番にfind_executable_pathで検索し、最初に見つかった実行可能ファイルのパスを返します。

    • param filenames: 検索する実行可能ファイル名のリスト。

    • param defval: ファイルが見つからない場合に返すデフォルト値。

    • param filename_only: フルパスではなくファイル名のみを返すかどうかのフラグ。

    • returns: 最初に見つかった実行可能ファイルのフルパスまたはファイル名、またはdefval

  • terminate(message: str | None = None, usage: callable | None = None, pause: bool = False) -> None メッセージを表示し、オプションで一時停止してからプログラムを終了します。 任意のメッセージと使用法メッセージを表示し、pauseがTrueの場合はユーザーがEnterキーを押すまで待ち、その後exit()を呼び出してプログラムを終了します。

    • param message: 終了時に表示するメッセージ (オプション)。

    • param usage: プログラムの使用法を表示する関数 (オプション)。

    • param pause: プログラム終了前に一時停止するかどうかのフラグ。

  • sfmt(str: str, fmt: str) -> str 文字列を指定されたフォーマットで整形します。 Pythonのf-stringのようなフォーマット機能を使用して、文字列を中央揃え、右揃えなどの指定された書式で整形します。

    • param str: 整形する文字列。

    • param fmt: フォーマット文字列 (例: '^10', '>10')。

    • returns: 整形された文字列。

  • getarg(position: int, defval: object | None = None) -> str | None コマンドライン引数を位置指定で取得します。 sys.argvから指定されたpositionの引数を取得します。引数が存在しない場合はdefvalを返します。

    • param position: 取得するコマンドライン引数の位置 (0はスクリプト名)。

    • param defval: 引数が存在しない場合に返すデフォルト値。

    • returns: 指定された位置の引数、またはdefval

  • getfloatarg(position: int, defval: float | None = None) -> float | None コマンドライン引数を浮動小数点数として取得します。 getargで引数を取得し、pfloatで浮動小数点数に変換します。

    • param position: 取得するコマンドライン引数の位置。

    • param defval: 引数が存在しない場合、または変換失敗時に返すデフォルト値。

    • returns: 変換された浮動小数点数、またはdefval

  • getintarg(position: int, defval: int | None = None) -> int | None コマンドライン引数を整数として取得します。 getargで引数を取得し、pintで整数に変換します。

    • param position: 取得するコマンドライン引数の位置。

    • param defval: 引数が存在しない場合、または変換失敗時に返すデフォルト値。

    • returns: 変換された整数、またはdefval

  • GetList(list: list, n: int, defval: object = 0.0) -> list リストを指定された長さに拡張または切り詰めます。 元のリストのコピーを作成し、nよりも短い場合はdefvalで拡張し、nよりも長い場合はnで切り詰めます。

    • param list: 処理対象のリスト。

    • param n: 最終的なリストの目標長。

    • param defval: リストを拡張する際に使用するデフォルト値。

    • returns: 指定された長さに調整された新しいリスト。

  • validate_error(y0: float, y1: float, eps: float, message: str) -> None 2つの値間の相対誤差を検証し、許容範囲を超える場合は終了します。 y0y1の間の相対誤差を計算し、epsで定義された許容誤差を超過する場合、エラーメッセージを出力してプログラムを終了します。y0が0の場合はy1を基準に誤差を計算します。

    • param y0: 比較する最初の値。

    • param y1: 比較する2番目の値。

    • param eps: 許容される相対誤差の最大値。

    • param message: エラーメッセージのプレフィックス。

    • raises SystemExit: 相対誤差がepsを超える場合。

  • read_csv_to_dict(path: str | Path, delimiter: str = ',', print_level: int = 1) -> tuple[list[str] | None, dict[str, list[object]] | None] CSVファイルを読み込み、列名をキーとする辞書形式でデータを返します。 CSVファイルの1行目をヘッダーとして読み込み、その列名をキーとする辞書を作成します。各キーの値は、その列のデータをリストとして保持します。データはpconv関数で自動的に型変換されます。

    • param path: 読み込むCSVファイルのパス。

    • param delimiter: CSVファイルの区切り文字。

    • param print_level: ファイル読み込みエラー時の警告表示レベル。

    • returns: (ラベルのリスト, 列名をキーとするデータ辞書) のタプル。ファイル読み込み失敗時は(None, None)。

  • read_csv_to_dict_list(path: str | Path, delimiter: str = ',', newline: str = '', convert_float: int | bool = 0, convert_int: int | bool = 0, print_level: int = 1) -> list[dict[str, object]] | None CSVファイルを読み込み、行を要素とする辞書のリスト形式でデータを返します。 CSVファイルの各行を辞書として読み込み、その辞書のリストを作成します。辞書のキーはCSVファイルのヘッダー行から取得されます。convert_floatまたはconvert_intフラグに応じて、数値データは自動的に変換されます。

    • param path: 読み込むCSVファイルのパス。

    • param delimiter: CSVファイルの区切り文字。

    • param newline: csv.DictReaderに渡すnewline引数。

    • param convert_float: データを浮動小数点数に変換するかどうかのフラグ。

    • param convert_int: データを整数に変換するかどうかのフラグ。convert_floatより優先度が低い。

    • param print_level: ファイル読み込みエラー時の警告表示レベル。

    • returns: 辞書のリスト。ファイル読み込み失敗時はNone。

  • read_csv(path: str | Path, delimiter: str = ',', newline: str = '', first_header: int | bool = 1, convert_float: int | bool = 0, convert_int: int | bool = 0) -> tuple[list[str] | None, list[list[object]] | None] CSVファイルを読み込み、ヘッダーとデータのリストを返します。 CSVファイルを読み込み、first_headerフラグに基づいて最初の行をヘッダーとして扱います。残りのデータは行のリストとして返されます。convert_floatまたはconvert_intフラグに応じて、数値データは自動的に変換されます。

    • param path: 読み込むCSVファイルのパス。

    • param delimiter: CSVファイルの区切り文字。

    • param newline: csv.readerに渡すnewline引数。

    • param first_header: 最初の行をヘッダーとして扱うかどうかのフラグ。1の場合はヘッダーとして扱う。

    • param convert_float: データを浮動小数点数に変換するかどうかのフラグ。

    • param convert_int: データを整数に変換するかどうかのフラグ。convert_floatより優先度が低い。

    • returns: (ヘッダーのリスト, データの2次元リスト) のタプル。ファイル読み込み失敗時は(None, None)。

  • read_csv2(fname: str | Path, delimiter: str = ',') -> tuple[list[str], list[list[float | None]]] CSVファイルを読み込み、最初の列をx軸、残りをy軸とする形式でデータを返します。 CSVファイルの1行目をヘッダーとして読み込み、最初のラベルをxlabel、残りのラベルをylabelsとして扱います。各列のデータはそれぞれxylist(yデータのリストのリスト)として取得し、pfloatで浮動小数点数に変換します。

    • param fname: 読み込むCSVファイルのパス。

    • param delimiter: CSVファイルの区切り文字。

    • returns: (全てのラベルのリスト, 全てのデータのリスト) のタプル。最初の要素がxデータ、以降がyデータ。

  • save_csv(path: str | Path, headerlist: list[str], datalist: list[list[object]], is_print: int | bool = 0) -> int ヘッダーとデータリストをCSVファイルに保存します。 指定されたパスにCSVファイルを作成し、headerlistをヘッダーとして書き込みます。datalistは列ごとのデータのリストのリストとして与えられ、行としてファイルに書き込まれます。is_printがTrueの場合、書き込むデータをコンソールにも表示します。

    • param path: 保存するCSVファイルのパス。

    • param headerlist: CSVファイルのヘッダーとして書き込む文字列のリスト。

    • param datalist: 書き込むデータ。列のリストのリスト (datalist[列番号][行番号])。

    • param is_print: 保存するデータをコンソールにも出力するかどうかのフラグ。

    • returns: 保存が成功した場合は1、失敗した場合は0。

  • joinf(list: list, format: str, sep: str) -> str リストの要素を指定されたフォーマットと区切り文字で結合した文字列を返します。 listの各要素をformat文字列で整形し、sepで区切って単一の文字列として結合します。

    • param list: 結合する要素のリスト。

    • param format: 各要素を整形するためのフォーマット文字列 (例: "%s", "%d", "%f")。

    • param sep: 要素間の区切り文字。

    • returns: フォーマットされ、結合された文字列。

  • merge_attributes(tobj: object, sobj: object | None) -> object ソースオブジェクトの属性をターゲットオブジェクトにマージします。 sobj (ソースオブジェクト) の全ての属性をtobj (ターゲットオブジェクト) にコピーします。ただし、tobjにすでに存在する属性は上書きされません。sobjがNoneの場合はtobjをそのまま返します。

    • param tobj: 属性をマージされるターゲットオブジェクト。

    • param sobj: 属性を提供するソースオブジェクト。

    • returns: 属性がマージされたターゲットオブジェクト。

  • check_attributes(obj: object, isprint: int | bool = 0, *args: str) -> list[str] | None オブジェクトに特定の属性が定義されているかチェックします。 argsで指定された属性名がobjに存在するかを確認します。存在しない属性名があればそのリストを返します。isprintがTrueの場合、未定義の属性名をコンソールに出力します。

    • param obj: 属性をチェックするオブジェクト。

    • param isprint: 未定義の属性名をコンソールに出力するかどうかのフラグ。

    • param args: チェックする属性名 (可変長引数)。

    • returns: 未定義の属性名のリスト。全て定義されている場合はNone。

  • lvlprint(lprint: int, level: int, *args: Any) -> None 指定されたレベルに基づいてメッセージを出力します。 lprintの値がlevel以上の場合に、print関数と同様に引数を出力します。

    • param lprint: 現在の印刷レベル。

    • param level: メッセージを出力するための最小レベル。

    • param args: print関数に渡す位置引数。

  • BuildCreationDateStr(date: datetime.datetime | None = None) -> str 指定された日付、または現在の日付から作成日文字列を生成します。 dateがNoneの場合、現在の日時を使用して'YYYY/MM/DD'形式の文字列を生成します。

    • param date: 作成日として使用するdatetimeオブジェクト (オプション)。

    • returns: 'YYYY/MM/DD'形式の日付文字列。

  • copy_path(path: str | Path, newpath: str | Path) -> int ファイルを新しい場所にコピーします。 shutil.copy2()を使用してファイルをコピーします。シンボリックリンクは解決されます。

    • param path: コピー元のファイルのパス。

    • param newpath: コピー先のファイルのパス。

    • returns: コピーが成功した場合は1、失敗した場合は0。

  • rename_file(path: str | Path, newpath: str | Path) -> int ファイル名を変更します。 os.rename()を使用してファイルのパスを変更します。

    • param path: 変更する元のファイルのパス。

    • param newpath: 新しいファイルのパス。

    • returns: 名前変更が成功した場合は1、失敗した場合は0。

  • delete_file(path: str | Path) -> int ファイルを削除します。 os.remove()を使用して指定されたファイルを削除します。

    • param path: 削除するファイルのパス。

    • returns: 削除が成功した場合は1、失敗した場合は0。

main scriptとして実行したときの動作

tkutils.py ファイルがメインスクリプトとして直接実行された場合、if __name__ == "__main__": ブロック内のコードが実行されます。 現在のソースコードでは、このブロック内に pass ステートメントのみが記述されているため、モジュールが直接実行されても何も特別な処理は行われません。これは、このモジュールが主に他のスクリプトやアプリケーションにインポートされて利用されるユーティリティライブラリであることを意味します。

if __name__ == "__main__":
    pass