LoginSignup
6
6

More than 5 years have passed since last update.

PyScribeでprintデバッグする

Posted at

PyScribeとは

PyScribeとは困ったときのpythonのprintデバッグをより簡単に実行するためのライブラリです.

インストール方法

pip でインストールできます。

$ pip install pyscribe

使い方

デバッグ対象のプログラム内でpyscribeのAPIを呼び出し実行する.

コマンド

$ pyscribe do_something.py

実行時オプション

コマンド引数 内容
--extraargs 呼び出すプログラムに実行時引数を渡す
--clean pyscribeに関連する部分を削除したファイル({name}_clean.py)を出力
--desugared pyscribeの形式からpythonの標準APIに則った形式に変換
--log 実行時のログファイル(pyscribe_logs.txt)を出力
--nolines 行番号を非表示

API呼び出し

API呼び出し 内容
pyscribe.Scriber(labels=[]) pyscribeの初期化
pyscribe.p(object, label=None) オブジェクトの値を型に合った形式で出力
pyscribe.iterscribe(object) forやwhileループ内のイテレータの現在の値を出力
pyscribe.watch(object) 指定したオブジェクトの値が変更されたときに出力
pyscribe.d(object, unit="*") unitで指定した文字を区切り文字として出力

pyscribe_sample.py
from pyscribe import pyscribe

def main():
    ps = pyscribe.Scriber()

    x = "hogehoge"
    ps.p(x)

    y = "hello"
    ps.p(y)
    ps.watch(y)
    y = "world"
    y = "!!"

    z = 1234
    ps.d(z, unit="#")


if __name__ == "__main__":
    main()
  • 実行
$ pyscribe pyscribe_sample.py
  • 結果
From line 7: x is the str hogehoge
From line 10: y is the str hello
From line 11: Watching variable y, currently str hello
From line 12: y changed to world
From line 13: y changed to !!
From line 16:
########################################
z is the int 1234
########################################

おわりに

シンプルなライブラリですが,困ったときのprintデバッグがより簡単になるかもしれません.
個人的には与えたオブジェクトの値の変更を監視できるwatchコマンドが便利かなと思いました.

参考

pyscribe - github

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6