tkutils.py Library Documentation

このドキュメントは、Pythonライブラリ tkutils.py の技術的な側面を詳細に解説します。


ライブラリの機能や目的

tkutils.py は、多様な汎用ユーティリティ機能を提供するPythonライブラリです。主に以下の目的と機能を提供します。

  • システムおよび環境情報: OS情報、環境変数、ファイルパスの操作、プロセス管理など、システムレベルの情報取得と操作を容易にします。

  • データ型変換とバリデーション: 文字列と数値(整数、浮動小数点数)間の安全な変換、数値の検証、リストや辞書の要素への安全なアクセスを提供します。

  • 文字列処理: コメントの削除、変数置換、引用符付き文字列の分割など、複雑な文字列操作をサポートします。

  • ファイルシステム操作: ファイルやディレクトリの存在確認、パスの結合、拡張子の取得、ファイルのコピー・リネーム・削除、特定ファイルの検索など、ファイルシステムとのインタラクションを簡素化します。

  • グラフ描画補助: Matplotlibと連携し、グラフのスタイル(色、線種、マーカー)の管理や、ギリシャ文字のマッピングを提供します。

  • エラーハンドリングとデバッグ: カスタムエラーの発生、現在位置の取得、例外フックの設定、pdb へのエントリポイント提供など、開発者が問題を特定しやすくするための機能が含まれます。

  • CSVファイルの操作: CSVファイルの読み込みと書き込みをサポートし、データ処理を効率化します。

このライブラリは、アプリケーション開発における共通の課題を解決し、コードの再利用性を高め、開発プロセスを加速することを目的としています。


importする方法

tkutils.py ライブラリを他のPythonプログラムから利用するには、以下の方法があります。

1. ライブラリ全体をインポートする:

import tkutils

# tkutils.py の関数や変数にアクセスする例
data = tkutils.read_csv("data.csv")
path = tkutils.get_fullpath("myfile.txt")

2. 特定の関数や変数のみをインポートする:

必要な関数や変数だけを明示的にインポートすることで、名前空間の衝突を避け、コードの可読性を高めることができます。

from tkutils import get_fullpath, read_csv_to_dict

# インポートした関数を直接利用する例
data_dict = read_csv_to_dict("data.csv")
full_path = get_fullpath("some_file.txt")

tkutils.py ファイルがプログラムの実行パス内、またはPythonのサイトパッケージディレクトリ内に存在することを確認してください。


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

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

必要な非標準ライブラリ:

  • numpy: 数値計算を効率的に行うためのライブラリ。主に配列操作や数値型の定義に使用されます。

  • matplotlib: グラフ描画に使用されます。特に色の変換やマーカーの定義に利用されます。

  • psutil: システムのプロセスやシステム利用率に関する情報を取得するためのライブラリ。プロセス管理機能で使用されます。

  • tklib: このライブラリのコードには tklib.tkimport, tklib.tkobject, tklib.tkre, tklib.collabo.RH.Ryu_colormap などの tklib プレフィックスのモジュールへの依存があります。これは通常、カスタムまたはプロジェクト固有のライブラリであるため、別途入手またはインストールが必要です。このドキュメントでは tklib のインストール方法は提供できません。

  • pandas: to_list 関数内で pd.DataFramepd.Series の型チェックに使用されていますが、モジュールのトップレベルでは import pandas が明示的に記述されていません。もしこれらのデータフレーム/シリーズを扱う場合はインストールが必要です。

インストール方法:

以下の pip コマンドを使用して、必要なライブラリをインストールしてください。

pip install numpy matplotlib psutil

pandas を使用する場合は、以下も実行してください。

pip install pandas

tklib については、開発元から提供される指示に従ってインストールしてください。


importできる変数と関数

変数

  • linestyles

    • 説明: Matplotlibで利用可能な線のスタイル('solid', 'dashed', 'dashdot', 'dotted')のリスト。

  • colors

    • 説明: グラフ描画で使用される色のリスト。ryu_cm.colors から初期化され、その後カスタムな色のサブセットに上書きされます。

  • markers

    • 説明: Matplotlibで利用可能なマーカースタイルのリスト。最初は複数のマーカー名と記号のタプルで構成されますが、最終的にはよく使われる記号のリストに絞り込まれます。matplotlib が利用可能な場合は、追加のティックおよびケアットマーカーが追加されます。

  • nlinestyles

    • 説明: linestyles リストの要素数。

  • ncolors

    • 説明: colors リストの要素数。

  • nmarkers

    • 説明: markers リストの要素数。

  • GREEK_MAP

    • 説明: 大文字・小文字のギリシャ文字のローマ字表記を、対応するUnicodeギリシャ文字にマッピングする辞書。

  • pattern_int

    • 説明: 符号付き整数をマッチさせるための正規表現オブジェクト (re.compile(r'^[-+]?[0-9]+$'))。

  • pattern_float

    • 説明: 符号付き浮動小数点数(指数表記を含む)をマッチさせるための正規表現オブジェクト (re.compile(r'^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$'))。

関数

  • convert_color(color)

    • 動作: 入力された色名をMatplotlibのCSS4_COLORSに変換します。色名が見つからない場合は元の値を返します。

    • 引数:

      • color (str or None): 変換する色名または色コード。

    • 戻り値: (str or None): 変換された色コードまたは元の値。

  • graph_style_idx(idx)

    • 動作: 指定されたインデックスに基づいて、colors および linestyles リストからグラフスタイル(色と線種)を循環的に選択して返します。

    • 引数:

      • idx (int): スタイルを選択するためのインデックス。

    • 戻り値: (tuple): (color, linestyle) のタタプル。

  • remove_comments(line)

    • 動作: 文字列から # 以降のコメント部分を削除します。引用符内の # は保護されます。

    • 引数:

      • line (str): 処理する文字列。

    • 戻り値: (str): コメントが削除された文字列。

  • raise_error(desc="custom error")

    • 動作: CustomError というカスタム例外を発生させます。

    • 引数:

      • desc (str): エラーの説明文字列。

    • 戻り値: (None): 常に例外を発生させるため、戻り値はありません。

  • get_position(self=None, _class=None)

    • 動作: この関数が呼び出された位置 (ファイル名、関数名、行番号) を辞書形式で返します。インスタンスやクラスが指定された場合は、それぞれの情報も追加されます。

    • 引数:

      • self (object, optional): インスタンス。指定された場合、クラス名も情報に含まれます。

      • _class (type, optional): クラス。指定された場合、クラス名も情報に含まれます。

    • 戻り値: (dict): {"filename": str, "function": str, "line": int} または {"filename": str, "class": str, "function": str, "line": int} の辞書。

  • get_position_str(self=None, _class=None)

    • 動作: この関数が呼び出された位置 (ファイル名、関数名、行番号) を整形された文字列形式で返します。インスタンスやクラスが指定された場合は、それぞれの情報も追加されます。

    • 引数:

      • self (object, optional): インスタンス。指定された場合、クラス名も情報に含まれます。

      • _class (type, optional): クラス。指定された場合、クラス名も情報に含まれます。

    • 戻り値: (str): 位置情報を示す文字列。

  • print_position(self=None, _class=None, exc_type=None, exc_value=None, exc_tb=None)

    • 動作: この関数が呼び出された位置 (ファイル名、関数名、行番号) を標準出力に表示します。例外情報が提供された場合は、詳細なトレースバックも表示します。

    • 引数:

      • self (object, optional): インスタンス。指定された場合、クラス名も情報に含まれます。

      • _class (type, optional): クラス。指定された場合、クラス名も情報に含まれます。

      • exc_type (type, optional): 例外の型。

      • exc_value (Exception, optional): 例外の値。

      • exc_tb (traceback, optional): トレースバックオブジェクト。

    • 戻り値: (None)

  • get_class(instance)

    • 動作: 指定されたインスタンスのクラスオブジェクトを返します。

    • 引数:

      • instance (object): クラスを取得するインスタンス。

    • 戻り値: (type): インスタンスのクラス。

  • get_definition_position(obj)

    • 動作: オブジェクト(クラスまたはインスタンス)が定義されているファイル名と行番号を返します。

    • 引数:

      • obj (object or type): 定義位置を取得するオブジェクトまたはクラス。

    • 戻り値: (tuple): (filename, line_number) のタプル。

  • print_process(proc_name='', username='', print_level=1)

    • 動作: 指定されたプロセス名とユーザー名に一致する実行中のプロセスを検索し、その情報を表示します。

    • 引数:

      • proc_name (str): 検索するプロセス名の一部。空文字列の場合はすべてのプロセスを対象とします。

      • username (str): 検索するユーザー名の一部。'all' の場合はすべてのユーザーを対象とします。

      • print_level (int): 情報を表示するかどうかを制御するレベル。0 の場合は表示しません。

    • 戻り値: (dict): 見つかったプロセスのPIDをキーとする辞書。

  • kill_process_interactive(proc_name='', username='', pid='', print_level=1)

    • 動作: 実行中のプロセスを対話的にリスト表示し、ユーザーがPIDを入力してプロセスを強制終了できるようにします。

    • 引数:

      • proc_name (str): 検索するプロセス名の一部。

      • username (str): 検索するユーザー名の一部。

      • pid (str): 事前にキルするPIDを指定する場合。通常は空で対話入力待ち。

      • print_level (int): 情報を表示するかどうかを制御するレベル。

    • 戻り値: (None)

  • safe_getelement(var, key, defval=None)

    • 動作: 辞書 var から key に対応する値を取得します。key が存在しない場合は defval を返します。

    • 引数:

      • var (dict): 処理する辞書。

      • key (any): 取得するキー。

      • defval (any, optional): キーが存在しない場合に返すデフォルト値。

    • 戻り値: (any): 取得された値またはデフォルト値。

  • handle_exception(exc_type, exc_value, exc_tb)

    • 動作: 例外が発生した際に呼び出されるカスタム例外ハンドラ。エラー情報とスタックトレースを表示し、ユーザー入力待ちでプログラムを終了させます。

    • 引数:

      • exc_type (type): 例外の型。

      • exc_value (Exception): 例外の値。

      • exc_tb (traceback): トレースバックオブジェクト。

    • 戻り値: (None)

  • set_exception(func=handle_exception, print_level=1)

    • 動作: Pythonのグローバル例外フック sys.excepthook を指定された関数に設定します。

    • 引数:

      • func (callable): sys.excepthook に設定する関数。デフォルトは handle_exception

      • print_level (int): 情報メッセージを表示するかどうかを制御するレベル。

    • 戻り値: (None)

  • is_numeric(var)

    • 動作: 変数が数値型(int, float, numpyの数値型など)であり、かつ無限大やNaNではないかを判定します。

    • 引数:

      • var (any): 判定する変数。

    • 戻り値: (bool): 数値であれば True、そうでなければ False

  • conv_float(val, format="{:.10g}")

    • 動作: 浮動小数点数を指定されたフォーマットで文字列に変換します。formatNone または空文字列の場合は、元の値をそのまま返します。

    • 引数:

      • val (float or any): 変換する値。

      • format (str): 浮動小数点数をフォーマットするための文字列。

    • 戻り値: (str or any): フォーマットされた文字列または元の値。

  • pconv_by_type_one(s, type='str', defval=None, strict=False)

    • 動作: 文字列 s を指定された単一の型に変換します。strictTrue の場合、厳密な変換を試み、失敗した場合は defval を返します。False の場合は、より柔軟な変換(pint, pfloat)を試みます。

    • 引数:

      • s (str): 変換する文字列。

      • type (type or str): 変換先の型 (例: int, 'float', 'str')。

      • defval (any, optional): 変換に失敗した場合のデフォルト値。

      • strict (bool): 厳密な変換を行うかどうかのフラグ。

    • 戻り値: (any): 変換された値または defval

  • pconv_by_type(s, type='str', defval=None, strict=False)

    • 動作: 文字列 s を、パイプ | で区切られた複数の型のうち、最初に成功した型に変換します。pconv_by_type_one を内部で呼び出します。

    • 引数:

      • s (str): 変換する文字列。

      • type (str or type): 変換先の型を示す文字列(例: 'int|float')、または単一の型。

      • defval (any, optional): 変換に失敗した場合のデフォルト値。

      • strict (bool): 厳密な変換を行うかどうかのフラグ。

    • 戻り値: (any): 変換された値または defval

  • pconv(s, defval=0, strict=True)

    • 動作: 文字列 s を整数、浮動小数点数、または元の文字列のいずれかに変換しようと試みます。

    • 引数:

      • s (str or None): 変換する文字列。

      • defval (any, optional): 変換に失敗した場合のデフォルト値。

      • strict (bool): 厳密な変換を行うかどうかのフラグ (現在は使用されていないように見えます)。

    • 戻り値: (int or float or str): 変換された値または元の文字列。

  • pint(s, defval=0, strict=True)

    • 動作: 文字列 s を整数に変換します。厳密モード (strict=True) の場合、変換できないと defval を返します。非厳密モード (strict=False) の場合、文字列から数値部分を抽出し変換を試みます。

    • 引数:

      • s (str or None): 変換する文字列。

      • defval (int, optional): 変換に失敗した場合のデフォルト値。

      • strict (bool): 厳密な変換を行うかどうかのフラグ。

    • 戻り値: (int): 変換された整数または defval

  • pfloat(s, defval=0.0, strict=True)

    • 動作: 文字列 s を浮動小数点数に変換します。厳密モード (strict=True) の場合、変換できないと defval を返します。非厳密モード (strict=False) の場合、文字列から数値部分を抽出し変換を試みます。

    • 引数:

      • s (str or None): 変換する文字列。

      • defval (float, optional): 変換に失敗した場合のデフォルト値。

      • strict (bool): 厳密な変換を行うかどうかのフラグ。

    • 戻り値: (float or str): 変換された浮動小数点数、defval、または元の文字列(defvalNone の場合)。

  • pintfloat(s, defval=0.0, strict=True)

    • 動作: 文字列 s をまず整数に変換しようと試み、失敗した場合は浮動小数点数に変換を試みます。

    • 引数:

      • s (str or None): 変換する文字列。

      • defval (float, optional): 変換に失敗した場合のデフォルト値。

      • strict (bool): 浮動小数点数変換時に厳密な変換を行うかどうかのフラグ。

    • 戻り値: (int or float): 変換された数値または defval

  • str2val(s)

    • 動作: 文字列を NoneTrueFalse、数値(整数または浮動小数点数)に変換します。

    • 引数:

      • s (str or None): 変換する文字列。

    • 戻り値: (None or bool or int or float or str): 変換された値または元の文字列。

  • val2str(val)

    • 動作: None, True, False の値を対応する文字列に変換します。その他の値はそのまま返します。

    • 引数:

      • val (any): 変換する値。

    • 戻り値: (str or any): 変換された文字列または元の値。

  • index2val(index, list_var, defval=(None, None))

    • 動作: リスト list_var 内で、指定された index (数値または値) に対応するインデックスと値を検索します。

    • 引数:

      • index (int or any): 検索するインデックス(数値)または値。

      • list_var (list): 検索対象のリスト。

      • defval (tuple, optional): 見つからなかった場合に返すデフォルト値のタプル (index, value)

    • 戻り値: (tuple): (見つかったインデックス, 見つかった値) のタプル。見つからなかった場合は (None, None)

  • format_strlist(vars, format, separator=', ')

    • 動作: リストの各要素を指定されたフォーマットで文字列化し、指定されたセパレータで連結します。

    • 引数:

      • vars (list): フォーマットする要素のリスト。

      • format (str): 各要素をフォーマットするための文字列。

      • separator (str): 要素を区切るセパレータ。

    • 戻り値: (str): フォーマットおよび連結された文字列。

  • print_line(data_list, format='{:^10}')

    • 動作: リストの各要素を指定されたフォーマットで一行に出力します。

    • 引数:

      • data_list (list): 出力するデータ要素のリスト。

      • format (str): 各要素をフォーマットするための文字列。

    • 戻り値: (None)

  • print_data(labels, data_list, label_format='{:^10}', data_format='{:>10}', header=None, nmax=None, print_level=0)

    • 動作: データリストと対応するラベルを、指定されたフォーマットで整形して出力します。オプションでヘッダーや表示行数を指定できます。

    • 引数:

      • labels (list): 各列のラベルのリスト。

      • data_list (list of list): 表示するデータ。各サブリストは1つの列に対応します。

      • label_format (str): ラベルをフォーマットするための文字列。

      • data_format (str): データをフォーマットするための文字列。

      • header (str, optional): データリストの前に表示するヘッダー文字列。

      • nmax (int, optional): 表示するデータ行の最大数。None の場合、全行表示。

      • print_level (int): 表示のレベル (現在は使用されていないように見えます)。

    • 戻り値: (None)

  • pdb()

    • 動作: Pythonデバッガ pdb の実行をその場で開始します。デバッグ中に変数を確認したり、コードをステップ実行したりするために使用します。

    • 引数: なし

    • 戻り値: (None)

  • is_list(var)

    • 動作: 変数がリストまたはタプル型であるかを判定します。

    • 引数:

      • var (any): 判定する変数。

    • 戻り値: (bool): リストまたはタプルであれば True、そうでなければ False

  • to_list(variable)

    • 動作: 変数をリスト型に変換します。Numpy配列、Pandas DataFrame/Series、またはその他のIterableをリストに変換します。

    • 引数:

      • variable (any): リストに変換する変数。

    • 戻り値: (list): 変換されたリスト。

  • minmax_xy(x=None, y=None, x0=None, xstep=None, xmin=None, xmax=None)

    • 動作: y の値の中から、x の指定された範囲 (xmin から xmax) 内での最小値と最大値を計算して返します。x0xstep が提供された場合は、インデックス計算に使用されます。

    • 引数:

      • x (list or np.ndarray, optional): x軸の値のリスト。

      • y (list or np.ndarray, optional): y軸の値のリスト。

      • x0 (float, optional): x軸の開始値。

      • xstep (float, optional): x軸のステップサイズ。

      • xmin (float, optional): x軸の最小範囲。

      • xmax (float, optional): x軸の最大範囲。

    • 戻り値: (tuple): (min_y, max_y) のタプル。

  • get_max_index(list, axis=0)

    • 動作: リスト(またはNumpy配列)内の最大値のインデックスを返します。Numpyの argmax と同じ振る舞いを意図しています。

    • 引数:

      • list (list or np.ndarray): 検索対象のリストまたは配列。

      • axis (int, optional): Numpy配列の場合に最大値を検索する軸 (この関数では axis は無視され、常に平坦化されたリストで処理されます)。

    • 戻り値: (int): 最大値のインデックス。

  • get_min_index(list, axis)

    • 動作: リスト(またはNumpy配列)内の最小値のインデックスを返します。Numpyの argmin と同じ振る舞いを意図しています。

    • 引数:

      • list (list or np.ndarray): 検索対象のリストまたは配列。

      • axis (int): Numpy配列の場合に最小値を検索する軸 (この関数では axis は無視され、常に平坦化されたリストで処理されます)。

    • 戻り値: (int): 最小値のインデックス。

  • find_range_indexes(x, xmin, xmax)

    • 動作: x のリスト内で、xmin 以上 xmax 以下の範囲に収まる要素の開始インデックスと終了インデックスを返します。

    • 引数:

      • x (list): 検索対象の数値リスト。

      • xmin (float): 範囲の最小値。

      • xmax (float): 範囲の最大値。

    • 戻り値: (tuple): (start_index, end_index) のタプル。

  • transpose_list2d(data_list)

    • 動作: 2次元リストを転置します(行と列を入れ替えます)。

    • 引数:

      • data_list (list of list): 転置する2次元リスト。

    • 戻り値: (list of list): 転置された2次元リスト。

  • sort_lists(lists)

    • 動作: 複数のリストをまとめてソートします。リストの最初の要素をキーとして各リストの対応する要素をグループ化し、ソートした結果を元の構造に戻します。

    • 引数:

      • lists (list of list): ソートする複数のリスト。

    • 戻り値: (list of list): ソートされた複数のリスト。

  • is_float(s)

    • 動作: 変数 s が浮動小数点数型であるか、または浮動小数点数に変換可能な文字列であるかを判定します。

    • 引数:

      • s (any): 判定する変数。

    • 戻り値: (bool): 浮動小数点数であれば True、そうでなければ False

  • is_int(s)

    • 動作: 変数 s が整数型であるか、または整数に変換可能な文字列であるかを判定します。

    • 引数:

      • s (any): 判定する変数。

    • 戻り値: (bool): 整数であれば True、そうでなければ False

  • analyze_varstr(str)

    • 動作: tklib.tkobject._analyze_varstr 関数を呼び出し、変数文字列を解析します。具体的な動作は tklib の実装に依存します。

    • 引数:

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

    • 戻り値: (any): 解析結果。

  • split_optstr(str)

    • 動作: val:id 形式の文字列を値とIDに分割します。: がない場合は、文字列全体を値として扱い、IDは None とします。

    • 引数:

      • str (str): 分割する文字列。

    • 戻り値: (tuple): (value, id) のタプル。

  • quote_command_if_space(s, special_chars="", quote_blank=True)

    • 動作: 文字列 s に空白や指定された特殊文字が含まれる場合、または空文字列の場合に、二重引用符で囲みます。

    • 引数:

      • s (str or None): 処理する文字列。

      • special_chars (str): 引用符で囲むトリガーとなる追加の特殊文字。

      • quote_blank (bool): 空文字列を "" で囲むかどうか。

    • 戻り値: (str or None): 引用符で囲まれた文字列または元の文字列。

  • convert_by_vars(s, vars, prefix=r'\$', bra=r'\(', ket=r'\)')

    • 動作: 文字列 s 内の $varname または $(varname) 形式の変数を、vars 辞書の値に置換します。

    • 引数:

      • s (str): 変換する文字列。

      • vars (dict): 変数名と値のマッピング辞書。

      • prefix (str): 変数名のプレフィックス(通常は r'\$')。

      • bra (str): 変数名を囲む開始括弧(通常は r'\(')。

      • ket (str): 変数名を囲む終了括弧(通常は r'\)')。

    • 戻り値: (str): 変数が置換された文字列。

  • del_quote(s)

    • 動作: 文字列 s の先頭と末尾にある引用符(" または ') を削除します。

    • 引数:

      • s (str): 処理する文字列。

    • 戻り値: (str): 引用符が削除された文字列。

  • add_quotation(str, quotation, quotation_original)

    • 動作: 文字列 str に指定された引用符を追加します。quotation'remove' の場合は引用符を削除し、'keep' の場合は quotation_original で囲みます。

    • 引数:

      • str (str): 処理する文字列。

      • quotation (str): 追加する引用符の種類、または 'remove', 'keep'

      • quotation_original (str): 元の引用符(quotation='keep' の場合に使用)。

    • 戻り値: (str): 引用符が追加または削除された文字列。

  • split_quoted_args(s, sep=r'\s+', quotation='remove')

    • 動作: 引用符で囲まれた部分を考慮しながら、文字列 s をセパレータ sep で引数リストに分割します。

    • 引数:

      • s (str): 分割する文字列。

      • sep (str): 分割に使用する正規表現セパレータ。

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

    • 戻り値: (list): 分割された引数のリスト。

  • split_two(s, sep=r'\s+', quotation='remove', defval='')

    • 動作: 文字列 s を最初のセパレータ sep で2つの部分に分割します。引用符内の文字列は単一の要素として扱われます。

    • 引数:

      • s (str): 分割する文字列。

      • sep (str): 分割に使用する正規表現セパレータ。

      • quotation (str): 引用符の処理方法。

      • defval (str): 2つ目の部分がない場合に返すデフォルト値。

    • 戻り値: (tuple): (first_part, second_part) のタプル。

  • split_command_line(s, quotation='remove')

    • 動作: コマンドライン文字列をコマンド、残りの文字列、および引数リストに分割します。

    • 引数:

      • s (str): コマンドライン文字列。

      • quotation (str): 引用符の処理方法。

    • 戻り値: (tuple): (command, rest_of_string, args_list) のタプル。

  • mprint(*args, fp=None, **kwargs)

    • 動作: print 関数と同様に標準出力に表示し、さらにファイルオブジェクト fp が指定されていれば、そのファイルにも内容を書き込みます。

    • 引数:

      • *args: print 関数に渡される引数。

      • fp (file object, optional): 出力先のファイルオブジェクト。

      • **kwargs: print 関数に渡されるキーワード引数。

    • 戻り値: (None)

  • get_path_list(varname='PATH')

    • 動作: 指定された環境変数(デフォルトは PATH)の値を取得し、OSパスセパレータで分割してリストとして返します。

    • 引数:

      • varname (str): 取得する環境変数名。

    • 戻り値: (list): パスのリスト。

  • desktop_name()

    • 動作: 現在のOSに基づいてデスクトップ環境の名前を返します ('Windows', 'Darwin' など)。Linuxの場合は XDG_CURRENT_DESKTOP 環境変数を参照します。

    • 引数: なし

    • 戻り値: (str or None): デスクトップ環境の名前。

  • add_path(path, varname='PATH')

    • 動作: 指定されたパスを環境変数(デフォルトは PATH)の先頭に追加します。既にパスが存在する場合は追加しません。

    • 引数:

      • path (str): 追加するパス。

      • varname (str): 操作する環境変数名。

    • 戻り値: (str): 更新された環境変数の値。

  • normalize_str(str, conv_table=None, target_char=' ', unicodedata_mode='NFKC')

    • 動作: 文字列内の全角スペース、タブ、改行、カンマなどを指定された target_char に変換し、さらにUnicode正規化 (NFKC フォーム) を適用します。

    • 引数:

      • str (str or None): 正規化する文字列。

      • conv_table (dict, optional): 文字変換テーブル。指定しない場合はデフォルトのテーブルが使用されます。

      • target_char (str): 変換先の文字。

      • unicodedata_mode (str): Unicode正規化のモード。

    • 戻り値: (str or None): 正規化された文字列。

  • normalize_name(name, conv_table, unicodedata_mode='NFKC', upper_mode='upper')

    • 動作: normalize_str を使用して文字列を正規化し、余分なスペースを削除し、指定されたモード ('upper', 'lower', 'capitalize', 'title') で大文字/小文字を変換します。

    • 引数:

      • name (str): 正規化する名前文字列。

      • conv_table (dict): 文字変換テーブル。

      • unicodedata_mode (str): Unicode正規化のモード。

      • upper_mode (str): 大文字/小文字変換のモード。

    • 戻り値: (str): 正規化された名前文字列。

  • add_dict(var, key1, key2=None)

    • 動作: 辞書 var 内のカウンタをインクリメントします。key2 が指定された場合、ネストされた辞書 (var[key1][key2]) のカウンタをインクリメントします。

    • 引数:

      • var (dict): カウンタを保持する辞書。

      • key1 (any): 1つ目のキー。

      • key2 (any, optional): 2つ目のキー(ネストされた辞書の場合)。

    • 戻り値: (None)

  • get_os_info(terse=False)

    • 動作: 現在のOSの情報をタプルで返します (システム名、プラットフォーム情報、リリース、バージョン)。

    • 引数:

      • terse (bool): プラットフォーム情報を簡潔にするかどうか。

    • 戻り値: (tuple): (system, platform, release, version) のタプル。

  • get_os()

    • 動作: 現在のOSのシステム名('Darwin', 'Windows', 'Linux' など)を返します。

    • 引数: なし

    • 戻り値: (str): OSのシステム名。

  • is_windows()

    • 動作: 現在のOSがWindowsであるかを判定します。Windowsの場合、OSのバージョン文字列を返します。

    • 引数: なし

    • 戻り値: (str or bool): Windowsの場合はバージョン文字列、そうでなければ False

  • is_mac()

    • 動作: 現在のOSがmacOS (Darwin) であるかを判定します。macOSの場合、OSのバージョン文字列を返します。

    • 引数: なし

    • 戻り値: (str or bool): macOSの場合はバージョン文字列、そうでなければ False

  • is_linux()

    • 動作: 現在のOSがLinuxであるかを判定します。Linuxの場合、OSのバージョン文字列を返します。

    • 引数: なし

    • 戻り値: (str or bool): Linuxの場合はバージョン文字列、そうでなければ False

  • getenv(key, defval=None)

    • 動作: 指定された環境変数 key の値を取得します。環境変数が存在しない場合は defval を返します。

    • 引数:

      • key (str): 取得する環境変数名。

      • defval (any, optional): 環境変数が存在しない場合のデフォルト値。

    • 戻り値: (str or any): 環境変数の値または defval

  • setenv(key, val=None)

    • 動作: 指定された環境変数 keyval を設定します。valNone の場合、環境変数を削除します。

    • 引数:

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

      • val (str, optional): 設定する値。None の場合は削除。

    • 戻り値: (None)

  • GetPathDelimiter()

    • 動作: OSに依存するパス区切り文字 (os.sep) を返します。

    • 引数: なし

    • 戻り値: (str): パス区切り文字。

  • get_path_separator()

    • 動作: OSに依存するパス区切り文字 (os.sep) を返します。GetPathDelimiter と同じです。

    • 引数: なし

    • 戻り値: (str): パス区切り文字。

  • get_PATH_env_separator()

    • 動作: OSに依存する環境変数 PATH の区切り文字 (os.pathsep) を返します。

    • 引数: なし

    • 戻り値: (str): PATH 環境変数の区切り文字。

  • get_ext_separator()

    • 動作: ファイル名の拡張子区切り文字 (os.extsep) を返します(通常は .)。

    • 引数: なし

    • 戻り値: (str): 拡張子区切り文字。

  • is_dir(path)

    • 動作: 指定されたパスがディレクトリであるかを判定します。

    • 引数:

      • path (str): 判定するパス。

    • 戻り値: (bool): ディレクトリであれば True、そうでなければ False

  • IsDir(path)

    • 動作: is_dir と同じです。指定されたパスがディレクトリであるかを判定します。

    • 引数:

      • path (str): 判定するパス。

    • 戻り値: (bool): ディレクトリであれば True、そうでなければ False

  • is_file(path)

    • 動作: 指定されたパスがファイルであるかを判定します。

    • 引数:

      • path (str): 判定するパス。

    • 戻り値: (bool): ファイルであれば True、そうでなければ False

  • IsFile(path)

    • 動作: is_file と同じです。指定されたパスがファイルであるかを判定します。

    • 引数:

      • path (str): 判定するパス。

    • 戻り値: (bool): ファイルであれば True、そうでなければ False

  • is_exist(path)

    • 動作: 指定されたパスが存在するかを判定します(ファイルまたはディレクトリ)。

    • 引数:

      • path (str): 判定するパス。

    • 戻り値: (bool): 存在すれば True、そうでなければ False

  • Exists(path)

    • 動作: is_exist と同じです。指定されたパスが存在するかを判定します。

    • 引数:

      • path (str): 判定するパス。

    • 戻り値: (bool): 存在すれば True、そうでなければ False

  • make_path(dir, *args)

    • 動作: ディレクトリパスと追加のパス要素を結合して完全なパスを作成します。

    • 引数:

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

      • *args (str): 結合する追加のパス要素。

    • 戻り値: (str): 結合されたパス。

  • MakePath(dir, *args)

    • 動作: make_path と同じです。ディレクトリパスと追加のパス要素を結合して完全なパスを作成します。

    • 引数:

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

      • *args (str): 結合する追加のパス要素。

    • 戻り値: (str): 結合されたパス。

  • get_fullpath(path)

    • 動作: 指定されたパスの絶対パスを返します。

    • 引数:

      • path (str): 取得するパス。

    • 戻り値: (str): 絶対パス。

  • get_ext(path)

    • 動作: 指定されたパスの拡張子を返します。

    • 引数:

      • path (str): 取得するパス。

    • 戻り値: (str): 拡張子。

  • get_dirname(path)

    • 動作: 指定されたパスのディレクトリ部分を絶対パスで返します。

    • 引数:

      • path (str): 取得するパス。

    • 戻り値: (str): ディレクトリ名。

  • get_last_directory(path, check_dir=False)

    • 動作: 指定されたパスの最終ディレクトリ名を返します。check_dirTrue でパスがディレクトリの場合、そのディレクトリ名を返します。そうでなければ、パスの親ディレクトリの最終部分を返します。

    • 引数:

      • path (str): 処理するパス。

      • check_dir (bool): パスがディレクトリであるかチェックするかどうか。

    • 戻り値: (str): 最終ディレクトリ名。

  • get_upper_directory(path)

    • 動作: 指定されたパスの親ディレクトリ名を返します。

    • 引数:

      • path (str): 処理するパス。

    • 戻り値: (str): 親ディレクトリ名。

  • split_drive(path)

    • 動作: Windowsパスからドライブレターと、ドライブレターを除いたディレクトリ名を分割して返します。

    • 引数:

      • path (str): 処理するパス。

    • 戻り値: (tuple): (drive, dirname_without_drive) のタプル。

  • split_file_path(path, check_dir=False)

    • 動作: パスをディレクトリ名、ファイル名、ファイル本体、拡張子の各部分に分割します。

    • 引数:

      • path (str): 分割するパス。

      • check_dir (bool): パスがディレクトリであるかチェックするかどうか。

    • 戻り値: (tuple): (dirname, basename, filebody, ext) のタプル。

  • SplitFilePath(path)

    • 動作: split_file_path と同じです。パスをディレクトリ名、ファイル名、ファイル本体、拡張子の各部分に分割します。

    • 引数:

      • path (str): 分割するパス。

    • 戻り値: (tuple): (dirname, basename, filebody, ext) のタプル。

  • modify_path(path, addpath)

    • 動作: 指定されたパスのファイル本体部分に addpath を追加して新しいパスを作成します。

    • 引数:

      • path (str): 元のパス。

      • addpath (str): ファイル本体に追加する文字列。

    • 戻り値: (str): 変更されたパス。

  • replace_path(path, template, ext_dict={})

    • 動作: 指定された path の各要素(フルパス、ディレクトリ名、ファイル名、ファイル本体、拡張子)を template 文字列のプレースホルダーに置き換えます。

    • 引数:

      • path (str): 処理するパス。

      • template (str): パス要素を埋め込むためのフォーマット文字列。

      • ext_dict (dict): 追加の置換辞書。

    • 戻り値: (str): 置換されたパス文字列。

  • get_user_inifile_dir(env_vars=['HOME'], dir_names=['.'])

    • 動作: ユーザーのホームディレクトリ内にある設定ファイルディレクトリのパスを取得します。存在しない場合は作成を試みます。

    • 引数:

      • env_vars (list of str): ホームディレクトリを示す環境変数名のリスト。

      • dir_names (list of str): ホームディレクトリからの相対ディレクトリ名のリスト。

    • 戻り値: (str or None): 設定ファイルディレクトリのパス、または見つからない場合は None

  • get_file_list(path, filemask='*.*', filename_only=True)

    • 動作: 指定されたパス内のファイルとディレクトリのリストを取得します。filemask を使用してフィルタリングできます。

    • 引数:

      • path (str): 検索するディレクトリパス。

      • filemask (str): ファイル名パターン (セミコロン区切りで複数指定可能)。

      • filename_only (bool): ファイル名のみを返すか、完全なパスを返すか。

    • 戻り値: (tuple): (directories, files) のタプル。

  • get_file_masks(key='executables')

    • 動作: OSの種類とキーに基づいて、ファイルのマスクパターンリストを返します。特に実行可能ファイルの拡張子リストを提供します。

    • 引数:

      • key (str): 取得するマスクのタイプ ('executables')。

    • 戻り値: (list): ファイルマスクのリスト。

  • find_files(filename, start_dir=None)

    • 動作: 指定された開始ディレクトリ以下で、特定のファイル名パターンに一致するすべてのファイルを再帰的に検索し、その完全なパスのリストを返します。

    • 引数:

      • filename (str): 検索するファイル名パターン。

      • start_dir (str, optional): 検索を開始するディレクトリ。None の場合、カレントディレクトリ。

    • 戻り値: (list): 見つかったファイルのパスのリスト。

  • find_latest_file(filename, start_dir=None, defval=None)

    • 動作: 指定されたファイル名パターンに一致するファイルの中で、最終更新日時が最新のファイルのパスを返します。

    • 引数:

      • filename (str): 検索するファイル名パターン。

      • start_dir (str, optional): 検索を開始するディレクトリ。

      • defval (any, optional): ファイルが見つからなかった場合のデフォルト値。

    • 戻り値: (str or any): 最新のファイルのパス、または defval

  • find_executable_path(filename, defval=None, filename_only=False)

    • 動作: PATH 環境変数に沿って、指定された実行可能ファイル(Windowsの場合は PATHEXT も考慮)の完全なパスを検索します。

    • 引数:

      • filename (str): 検索する実行可能ファイル名。

      • defval (any, optional): 見つからなかった場合のデフォルト値。

      • filename_only (bool): ファイル名のみを返すか、完全なパスを返すか。

    • 戻り値: (str or any): 見つかった実行可能ファイルのパス、または defval

  • search_executable_path(filenames, defval=None, filename_only=False)

    • 動作: 複数のファイル名リストから、最初に見つかった実行可能ファイルのパスを検索します。

    • 引数:

      • filenames (list of str): 検索する実行可能ファイル名のリスト。

      • defval (any, optional): 見つからなかった場合のデフォルト値。

      • filename_only (bool): ファイル名のみを返すか、完全なパスを返すか。

    • 戻り値: (str or any): 見つかった実行可能ファイルのパス、または defval

  • terminate(message=None, usage=None, pause=False)

    • 動作: メッセージを表示し、オプションでユーザー入力を待ってからプログラムを終了します。

    • 引数:

      • message (str, optional): 終了時に表示するメッセージ。

      • usage (callable, optional): プログラムの利用方法を表示する関数。

      • pause (bool): 終了前にユーザー入力(Enterキー)を待つかどうか。

    • 戻り値: (None): 常にプログラムを終了するため、戻り値はありません。

  • sfmt(str, fmt)

    • 動作: 文字列を指定されたフォーマットで整形し、両端の空白を削除して返します。

    • 引数:

      • str (str): フォーマットする文字列。

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

    • 戻り値: (str): フォーマットされた文字列。

  • getarg(position, defval=None)

    • 動作: コマンドライン引数 (sys.argv) の指定された位置の引数を取得します。存在しない場合は defval を返します。

    • 引数:

      • position (int): sys.argv における引数のインデックス。

      • defval (any, optional): 引数がない場合のデフォルト値。

    • 戻り値: (str or any): コマンドライン引数の値、または defval

  • getfloatarg(position, defval=None)

    • 動作: コマンドライン引数の指定された位置の引数を取得し、浮動小数点数に変換して返します。

    • 引数:

      • position (int): sys.argv における引数のインデックス。

      • defval (float, optional): 変換できない場合または引数がない場合のデフォルト値。

    • 戻り値: (float or any): 変換された浮動小数点数、または defval

  • getintarg(position, defval=None)

    • 動作: コマンドライン引数の指定された位置の引数を取得し、整数に変換して返します。

    • 引数:

      • position (int): sys.argv における引数のインデックス。

      • defval (int, optional): 変換できない場合または引数がない場合のデフォルト値。

    • 戻り値: (int or any): 変換された整数、または defval

  • GetList(list, n, defval=0.0)

    • 動作: リストを指定された長さ n に調整します。リストが短い場合は defval で埋め、長い場合は切り捨てます。

    • 引数:

      • list (list): 調整するリスト。

      • n (int): 目標とするリストの長さ。

      • defval (any, optional): リストを埋めるためのデフォルト値。

    • 戻り値: (list): 長さが調整されたリスト。

  • validate_error(y0, y1, eps, message)

    • 動作: 2つの値 y0y1 の相対誤差が許容誤差 eps を超える場合に、エラーメッセージを出力してプログラムを終了します。

    • 引数:

      • y0 (float): 基準値。

      • y1 (float): 比較値。

      • eps (float): 許容相対誤差。

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

    • 戻り値: (None): エラーが発生した場合、プログラムを終了します。

  • read_csv_to_dict(path, delimiter=',', print_level=1)

    • 動作: CSVファイルを読み込み、各列のヘッダーをキーとし、その列の値をリストとして持つ辞書形式でデータを返します。

    • 引数:

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

      • delimiter (str): 列の区切り文字。

      • print_level (int): 警告メッセージを表示するかどうか。

    • 戻り値: (tuple): (labels, data_dict) のタプル。ファイルが読み込めない場合は (None, None)

  • read_csv_to_dict_list(path, delimiter=',', newline='', convert_float=0, convert_int=0, print_level=1)

    • 動作: CSVファイルを読み込み、各行を辞書として持つリスト形式でデータを返します。オプションで数値型に変換できます。

    • 引数:

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

      • delimiter (str): 列の区切り文字。

      • newline (str): csv.DictReadernewline 引数(現在は無視されている可能性があります)。

      • convert_float (int): 値を浮動小数点数に変換するかどうか (0: 変換しない, 1: 変換する)。

      • convert_int (int): 値を整数に変換するかどうか (0: 変換しない, 1: 変換する)。

      • print_level (int): 警告メッセージを表示するかどうか。

    • 戻り値: (list of dict or None): 各行が辞書であるリスト。ファイルが読み込めない場合は None

  • read_csv(path, delimiter=',', newline='', first_header=1, convert_float=0, convert_int=0)

    • 動作: CSVファイルを読み込み、ヘッダー行とデータ行を別々にリストのリストとして返します。オプションで数値型に変換できます。

    • 引数:

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

      • delimiter (str): 列の区切り文字。

      • newline (str): csv.readernewline 引数。

      • first_header (int): 最初の行をヘッダーとして扱うかどうか (0: 扱わない, 1: 扱う)。

      • convert_float (int): 値を浮動小数点数に変換するかどうか。

      • convert_int (int): 値を整数に変換するかどうか。

    • 戻り値: (tuple): (header_list, data_list) のタプル。ファイルが読み込めない場合は (None, None)

  • read_csv2(fname, delimiter=',')

    • 動作: CSVファイルを読み込み、最初の列を x データ、残りの列を y データ (ylist) として扱います。ヘッダー情報も取得します。

    • 引数:

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

      • delimiter (str): 列の区切り文字。

    • 戻り値: (tuple): ([xlabel, *ylabels], [x_data, *y_data_lists]) のタプル。

  • save_csv(path, headerlist, datalist, is_print=0)

    • 動作: ヘッダーリストとデータリストをCSVファイルに保存します。

    • 引数:

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

      • headerlist (list): ヘッダーのリスト。

      • datalist (list of list): 保存するデータ。各サブリストは1つの列に対応します。

      • is_print (int): 保存中にデータを標準出力にも表示するかどうか。

    • 戻り値: (int): 保存が成功した場合は 1、失敗した場合は 0

  • joinf(list, format, sep)

    • 動作: リストの各要素を指定されたフォーマットで文字列化し、指定されたセパレータで連結します。

    • 引数:

      • list (list): 連結する要素のリスト。

      • format (str): 各要素をフォーマットするための文字列(Cスタイルの % フォーマット)。

      • sep (str): 要素を区切るセパレータ。

    • 戻り値: (str): フォーマットおよび連結された文字列。

  • merge_attributes(tobj, sobj)

    • 動作: ソースオブジェクト sobj の属性をターゲットオブジェクト tobj にマージします。tobj に既存の属性は上書きされません。

    • 引数:

      • tobj (object): ターゲットオブジェクト。

      • sobj (object or None): ソースオブジェクト。

    • 戻り値: (object): 属性がマージされたターゲットオブジェクト。

  • check_attributes(obj, isprint=0, *args)

    • 動作: オブジェクト obj が指定された属性 *args を持っているかを確認します。存在しない属性のリストを返します。

    • 引数:

      • obj (object): チェックするオブジェクト。

      • isprint (int): 存在しない属性を標準出力に表示するかどうか。

      • *args (str): チェックする属性名の可変引数リスト。

    • 戻り値: (list or None): 存在しない属性名のリスト。すべての属性が存在する場合は None

  • lvlprint(lprint, level, *args)

    • 動作: lprintlevel 以上の場合にのみ、メッセージを標準出力に表示します。デバッグレベル制御に使用されます。

    • 引数:

      • lprint (int): 現在のデバッグレベル。

      • level (int): メッセージを表示するために必要な最小レベル。

      • *args: 表示するメッセージの内容。

    • 戻り値: (None)

  • BuildCreationDateStr(date=None)

    • 動作: 指定された date オブジェクト(または現在の時刻)から、YYYY/MM/DD 形式の作成日文字列を生成します。

    • 引数:

      • date (datetime.datetime, optional): 日付オブジェクト。None の場合、現在時刻が使用されます。

    • 戻り値: (str): フォーマットされた日付文字列。

  • copy_path(path, newpath)

    • 動作: ファイルを path から newpath へコピーします。シンボリックリンクも追跡します。

    • 引数:

      • path (str): コピー元のパス。

      • newpath (str): コピー先のパス。

    • 戻り値: (int): 成功した場合は 1、失敗した場合は 0

  • rename_file(path, newpath)

    • 動作: ファイルまたはディレクトリを path から newpath へリネーム(移動)します。

    • 引数:

      • path (str): リネーム元のパス。

      • newpath (str): リネーム先のパス。

    • 戻り値: (int): 成功した場合は 1、失敗した場合は 0

  • delete_file(path)

    • 動作: 指定されたパスのファイルを削除します。

    • 引数:

      • path (str): 削除するファイルのパス。

    • 戻り値: (int): 成功した場合は 1、失敗した場合は 0


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

tkutils.py のソースコードには、if __name__ == "__main__": ブロックが存在しません。

したがって、このファイルをPythonインタプリタで直接実行しても、特別なスクリプトとしての動作は何も行われません。通常は、他のPythonプログラムからインポートされ、その中に定義されている変数や関数が利用されることを前提としています。

例:

python tkutils.py

上記コマンドを実行しても、何も出力されず、即座に終了します。